2025-07-28 Jonathan Wakely PR libstdc++/102181 * include/bits/stl_iterator_base_funcs.h (distance, advance): Check C++20 iterator concepts and handle appropriately. (__detail::__iter_category_converts_to_concept): New concept. (__detail::__promotable_iterator): New concept. * testsuite/24_iterators/operations/cxx20_iterators.cc: New test. 2025-07-28 Nathan Myers PR libstdc++/119742 * include/debug/bitset: Add new ctor. 2025-07-28 Luc Grosheintz * include/std/mdspan: Small stylistic adjustments. 2025-07-28 Luc Grosheintz * testsuite/23_containers/mdspan/accessors/generic.cc: Refactor test_ctor. 2025-07-28 Tomasz Kamiński PR libstdc++/121196 * include/std/inplace_vector (std::erase): Provide default argument for _Up parameter. * testsuite/23_containers/inplace_vector/erasure.cc: Add test for using braces-init-list as arguments to erase_if and use function to verify content of inplace_vector 2025-07-25 Tuur Martens * include/bits/unordered_map.h: Rectify referencing of non-existent type. 2025-07-24 Nathaniel Shead PR c++/117294 PR c++/113854 * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust diagnostics. * testsuite/20_util/expected/illformed_neg.cc: Likewise. * testsuite/20_util/optional/monadic/or_else_neg.cc: Likewise. * testsuite/23_containers/array/creation/3_neg.cc: Likewise. * testsuite/24_iterators/range_generators/lwg3900.cc: Likewise. * testsuite/29_atomics/atomic/requirements/types_neg.cc: Likewise. * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: Likewise. * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc: Likewise. * testsuite/std/format/arguments/args_neg.cc: Likewise. * testsuite/std/format/string_neg.cc: Likewise. 2025-07-24 Tomasz Kamiński PR libstdc++/104874 * testsuite/24_iterators/random_access/string_vector_iterators.cc: Reworked. 2025-07-24 Tomasz Kamiński * testsuite/21_strings/basic_string/cons/from_range.cc: Replace test_constexpr with test_ranges inside static_assert. * testsuite/21_strings/basic_string/modifiers/append/append_range.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/assign/assign_range.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/insert/insert_range.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/replace/replace_with_range.cc: Likewise. * testsuite/23_containers/vector/bool/cons/from_range.cc: Likewise. * testsuite/23_containers/vector/bool/modifiers/assign/assign_range.cc: Likewise. * testsuite/23_containers/vector/bool/modifiers/insert/insert_range.cc: Likewise. * testsuite/23_containers/vector/cons/from_range.cc: Likewise. * testsuite/23_containers/vector/modifiers/assign/assign_range.cc: Likewise. * testsuite/23_containers/vector/modifiers/insert/insert_range.cc: Likewise. * testsuite/23_containers/vector/bool/modifiers/insert/append_range.cc: Run full test_ranges instead of span-only in test_constexpr. * testsuite/23_containers/vector/modifiers/append_range.cc: Replace test_constexpr with calls to test_ranges and test_overlapping. * testsuite/util/testsuite_allocator.h (__gnu_test::SimpleAllocator): Declared member functions as constexpr. 2025-07-23 Luc Grosheintz * testsuite/23_containers/mdspan/accessors/default.cc: Delete. * testsuite/23_containers/mdspan/accessors/generic.cc: Slightly generalize the test code previously in default.cc. 2025-07-23 Luc Grosheintz * testsuite/23_containers/mdspan/extents/ctor_ints.cc: Remove superfluous parens. * testsuite/23_containers/mdspan/extents/ctor_shape.cc: Ditto. * testsuite/23_containers/mdspan/mdspan.cc: Ditto. 2025-07-23 Tomasz Kamiński PR libstdc++/119137 * testsuite/23_containers/inplace_vector/access/elem.cc: Cover front and back methods and const calls. * testsuite/23_containers/inplace_vector/access/elem_neg.cc: Likewise. * testsuite/23_containers/inplace_vector/modifiers/erase_neg.cc: New test. * testsuite/23_containers/inplace_vector/modifiers/single_insert_neg.cc: New test. 2025-07-22 Tomasz Kamiński PR libstdc++/119137 * testsuite/23_containers/inplace_vector/cons/from_range.cc: Run iterators and range test at compile-time. * testsuite/23_containers/inplace_vector/modifiers/assign.cc: Likewise. * testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc: Likewise. * testsuite/util/testsuite_iterators.h (__gnu_test::BoundsContainer) (__gnu_test::OutputContainer, __gnu_test::WritableObject) (__gnu_test::output_iterator_wrapper, __gnu_test::input_iterator_wrapper) (__gnu_test::forward_iterator_wrapper) (__gnu_test::bidirectional_iterator_wrapper) (__gnu_test::random_access_iterator_wrapper) (__gnu_test::test_container): Add appropriate _GLIBCXXNN_CONSTEXPR macros to member functions. (__gnu_test::contiguous_iterator_wrapper) (__gnu_test::input_iterator_wrapper_rval) (__gnu_test::test_range, __gnu_test::test_range_nocopy) (__gnu_test::test_sized_range_sized_sent) (__gnu_test::test_sized_range): Add constexpr specifier to member functions. 2025-07-22 Tomasz Kamiński PR libstdc++/119137 * include/std/inplace_vector (inplace_vector::assign_range): Replace _Nm with _M_size in the assigment loop. 2025-07-21 Luc Grosheintz * include/std/mdspan (mdspan::mdspan): Make default ctor conditionally noexcept. * testsuite/23_containers/mdspan/mdspan.cc: Add tests. 2025-07-21 Luc Grosheintz * include/std/mdspan (mdspan::is_always_unique): Make conditionally noexcept. (mdspan::is_always_exhaustive): Ditto. (mdspan::is_always_strided): Ditto. (mdspan::is_unique): Ditto. (mdspan::is_exhaustive): Ditto. (mdspan::is_strided): Ditto. * testsuite/23_containers/mdspan/layout_like.h: Make noexcept configurable. Add ThrowingLayout. * testsuite/23_containers/mdspan/mdspan.cc: Add tests for noexcept. 2025-07-20 Jakub Jelinek PR libstdc++/121174 * src/c++23/std.cc.in (std::dextents): Export. Add to FIXME comments other not yet implemented nor exported entities. 2025-07-18 Jonathan Wakely * include/bits/stl_iterator_base_types.h (__any_input_iterator): Only define when __cpp_lib_concepts is defined. 2025-07-18 Jonathan Wakely * doc/xml/manual/appendix_contributing.xml: Remove Paolo from list of maintainers to contact about contributing. * doc/html/manual/appendix_contributing.html: Regenerate. 2025-07-18 Jonathan Wakely * doc/xml/manual/build_hacking.xml: Document that windows_zones-map.h is a generated file. * doc/html/manual/appendix_porting.html: Regenerate. 2025-07-18 Tomasz Kamiński PR libstdc++/119137 * include/std/inplace_vector (inplace_vector::operator=): Qualify call to std::addressof. 2025-07-18 Tomasz Kamiński PR libstdc++/121154 * include/bits/chrono_io.h (_ChronoSpec::_M_time_point): Remove. (_ChronoSpec::_M_needs_ok_check): Define (__formatter_chrono::_M_parse): Set _M_needs_ok_check. (__formatter_chrono::_M_check_ok): Check values also for debug mode, and return __string_view. (__formatter_chrono::_M_format_to): Handle results of _M_check_ok. (__formatter_chrono::_M_wi, __formatter_chrono::_M_a_A) (__formatter_chrono::_M_b_B, __formatter_chrono::_M_C_y_Y) (__formatter_chrono::_M_d_e, __formatter_chrono::_M_F): Removed handling of _M_debug. (__formatter_chrono::__M_m): Print zero unpadded in _M_debug mode. (__formatter_duration::_S_spec_for): Remove _M_time_point refernce. (__formatter_duration::_M_parse): Override _M_needs_ok_check. * testsuite/std/time/month/io.cc: Test for localized !ok() values. * testsuite/std/time/weekday/io.cc: Test for localized !ok() values. 2025-07-18 Jonathan Wakely PR libstdc++/121150 * testsuite/20_util/hash/int128.cc: Cast expected values to size_t. 2025-07-18 Jonathan Wakely * include/bits/unicode.h (_Utf_iterator::operator--): Reorder conditions and update position after reading a code unit. (_Utf_iterator::_M_read_reverse): Define. (_Utf_iterator::_M_read_utf8): Return extracted code point. (_Utf_iterator::_M_read_reverse_utf8): Define. (_Utf_iterator::_M_read_reverse_utf16): Define. (_Utf_iterator::_M_read_reverse_utf32): Define. * testsuite/ext/unicode/view.cc: Add checks for reversed views and reverse iteration. 2025-07-18 Jonathan Wakely * include/bits/unicode.h (_Utf_iterator): Reorder data members to be more compact. 2025-07-18 Jonathan Wakely Tomasz Kamiński PR libstdc++/119137 * doc/doxygen/user.cfg.in (INPUT): Add new header. * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/bits/stl_iterator_base_types.h (__any_input_iterator): Define. * include/bits/version.def (inplace_vector): Define. * include/bits/version.h: Regenerate. * include/precompiled/stdc++.h: Include new header. * src/c++23/std.cc.in: Export contents if new header. * include/std/inplace_vector: New file. * testsuite/23_containers/inplace_vector/access/capacity.cc: New file. * testsuite/23_containers/inplace_vector/access/elem.cc: New file. * testsuite/23_containers/inplace_vector/access/elem_neg.cc: New file. * testsuite/23_containers/inplace_vector/cons/1.cc: New file. * testsuite/23_containers/inplace_vector/cons/from_range.cc: New file. * testsuite/23_containers/inplace_vector/cons/throws.cc: New file. * testsuite/23_containers/inplace_vector/copy.cc: New file. * testsuite/23_containers/inplace_vector/erasure.cc: New file. * testsuite/23_containers/inplace_vector/modifiers/assign.cc: New file. * testsuite/23_containers/inplace_vector/modifiers/erase.cc: New file. * testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc: New file. * testsuite/23_containers/inplace_vector/modifiers/single_insert.cc: New file. * testsuite/23_containers/inplace_vector/move.cc: New file. * testsuite/23_containers/inplace_vector/relops.cc: New file. * testsuite/23_containers/inplace_vector/version.cc: New file. * testsuite/util/testsuite_iterators.h (input_iterator_wrapper::base): Define. 2025-07-17 Jonathan Wakely PR libstdc++/96710 * doc/xml/manual/evolution.xml: Document change or __int128. * doc/html/manual/api.html: Regenerate. 2025-07-17 Luc Grosheintz PR libstdc++/121061 * include/std/mdspan (extents::extents): Perform conversion to index_type of an r-value reference. (layout_left::mapping::operator()): Ditto. (layout_right::mapping::operator()): Ditto. (layout_stride::mapping::operator()): Ditto. * testsuite/23_containers/mdspan/extents/custom_integer.cc: Add tests for RValueInt and MutatingInt. * testsuite/23_containers/mdspan/int_like.h (RValueInt): Add. * testsuite/23_containers/mdspan/layouts/mapping.cc: Test with RValueInt. * testsuite/23_containers/mdspan/mdspan.cc: Ditto. 2025-07-17 Luc Grosheintz PR libstdc++/121061 * include/std/mdspan (extents::extents): Fix constraint to prevent non-const conversion to index_type. (layout_stride::mapping::mapping): Ditto. (mdspan::mdspan): Ditto. (mdspan::operator[]): Ditto. * testsuite/23_containers/mdspan/extents/custom_integer.cc: Add test for MutatingInt. * testsuite/23_containers/mdspan/int_like.h (MutatingInt): Add. * testsuite/23_containers/mdspan/layouts/mapping.cc: Add test for MutatingInt. * testsuite/23_containers/mdspan/layouts/stride.cc: Ditto. * testsuite/23_containers/mdspan/mdspan.cc: Ditto. 2025-07-17 Luc Grosheintz PR libstdc++/121061 * testsuite/23_containers/mdspan/extents/custom_integer.cc: Enable checking with different custom integers. Improve checking non-existence of overloads for incompatible custom integers. * testsuite/23_containers/mdspan/layouts/mapping.cc: ditto. Also improve reuse of int_like.h. * testsuite/23_containers/mdspan/layouts/stride.cc: ditto. * testsuite/23_containers/mdspan/mdspan.cc: ditto. * testsuite/23_containers/mdspan/extents/int_like.h: Rename (old name). * testsuite/23_containers/mdspan/int_like.h: Rename (new name). (ThrowingInt): Add. (NotIntLike): Add. 2025-07-17 Jonathan Wakely * include/bits/unicode.h (__unicode::_Utf_iterator): Add comments. (__unicode:_Utf_iterator::operator++()): Check whether to iterate over the buffer first. 2025-07-17 Jonathan Wakely PR libstdc++/121097 * include/c_global/cmath (hypot): Use __promote_3 instead of __promoted. 2025-07-16 Jonathan Wakely * include/std/bitset (__bitset::__string) [__cpp_lib_bitset]: Change alias to refer to basic_string_view instead. 2025-07-16 Tomasz Kamiński PR libstdc++/121114 * include/bits/version.def (constexpr_exceptions): Add no_stdname and changed value. * include/bits/version.h: Regenerated. * testsuite/18_support/exception/version.cc: Test that macro is not exported. 2025-07-15 Jonathan Wakely * include/bits/move.h (swap): Replace enable_if with concepts when available, and with __enable_if_t alias otherwise. 2025-07-15 Jonathan Wakely * include/bits/ranges_base.h (ranges::advance(i, n, bound)): Ensure that observable side effects on iterators match what is specified in the standard. 2025-07-15 Patrick Palka PR libstdc++/119962 * include/std/ranges (join_view::_Iterator::_M_outer): Initialize. (lazy_split_view::_OuterIter::_M_current): Initialize. (join_with_view::_Iterator::_M_outer_it): Initialize. * testsuite/std/ranges/adaptors/join.cc (test15): New test. * testsuite/std/ranges/adaptors/join_with/1.cc (test05): New test. * testsuite/std/ranges/adaptors/lazy_split.cc (test13): New test. 2025-07-15 Björn Schäpers PR libstdc++/108409 * scripts/gen_windows_zones_map.py: New file, generates windows_zones-map.h. * src/c++20/windows_zones-map.h: New file, contains the look up table. * src/c++20/tzdb.cc (tzdb::current_zone): Add Windows code path. 2025-07-15 Björn Schäpers * src/c++20/tzdb.cc (zoneinfo_file): On Windows look relative from the DLL path for the time zone information. 2025-07-15 Jonathan Wakely * testsuite/25_algorithms/copy/debug/constexpr_neg.cc: * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc: * testsuite/25_algorithms/equal/debug/constexpr_neg.cc: * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc: * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc: * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc: * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc: * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc: * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc: 2025-07-15 Jonathan Wakely PR libstdc++/121024 * include/bits/ranges_uninitialized.h (ranges::destroy): Do not optimize away trivial destructors during constant evaluation. (ranges::destroy_n): Likewise. * testsuite/20_util/specialized_algorithms/destroy/121024.cc: New test. 2025-07-15 Jonathan Wakely * include/experimental/memory (swap, make_observer_ptr): Add constexpr. (operator==, operator!=, operator<, operator>, operator<=) (operator>=): Likewise. * testsuite/experimental/memory/observer_ptr/make_observer.cc: Checks for constant evaluation. * testsuite/experimental/memory/observer_ptr/relops/relops.cc: Likewise. * testsuite/experimental/memory/observer_ptr/swap/swap.cc: Likewise. 2025-07-15 Jonathan Wakely * include/std/type_traits (__make_unsigned_selector): Add unsigned __int128 to type list. * testsuite/20_util/make_unsigned/int128.cc: New test. 2025-07-15 Jonathan Wakely PR libstdc++/96710 * include/bits/functional_hash.h (hash<__int128>): Define for strict modes. (hash): Likewise. * testsuite/20_util/hash/int128.cc: New test. 2025-07-15 Tomasz Kamiński PR libstdc++/110739 * include/bits/chrono_io.h (__formatter_chrono::_S_weekdays) (__formatter_chrono::_S_months, __formatter_chrono::_S_fill_ampm): Define. (__formatter_chrono::_M_format_to): Do not pass context parameter to functions listed below. (__formatter_chrono::_M_a_A, __formatter_chrono::_M_b_B): Implement using harcoded list of names, and remove format context parameter. (__formatter_chrono::_M_p, __formatter_chrono::_M_r): Implement using _S_fill_ampm. (__formatter_chrono::_M_c): Removed format context parameter. (__formatter_chrono::_M_subsecs): Call __ctx.locale() directly, instead of _M_locale and do not compare with locale::classic(). Add [[unlikely]] attributes. (__formatter_chrono::_M_locale): Move to __formatter_duration. (__formatter_duration::_M_locale): Moved from __formatter_chrono. 2025-07-14 Jonathan Wakely * include/bits/stl_pair.h (swap): Add comment to deleted overload. * include/bits/unique_ptr.h (swap): Likewise. * include/std/array (swap): Likewise. * include/std/optional (swap): Likewise. * include/std/tuple (swap): Likewise. * include/std/variant (swap): Likewise. * testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust dg-error line numbers. 2025-07-14 Jonathan Wakely * include/pstl/algorithm_impl.h (__for_each_n_it_serial): Protect against overloaded comma operator. (__brick_walk2): Likewise. (__brick_walk2_n): Likewise. (__brick_walk3): Likewise. (__brick_move_destroy::operator()): Likewise. (__brick_calc_mask_1): Likewise. (__brick_copy_by_mask): Likewise. (__brick_partition_by_mask): Likewise. (__brick_calc_mask_2): Likewise. (__brick_reverse): Likewise. (__pattern_partial_sort_copy): Likewise. * include/pstl/memory_impl.h (__brick_uninitialized_move): Likewise. (__brick_uninitialized_copy): Likewise. * include/pstl/numeric_impl.h (__brick_transform_scan): Likewise. 2025-07-14 Jonathan Wakely PR libstdc++/117785 * include/bits/version.def (constexpr_exceptions): Define correct value. * include/bits/version.h: Regenerate. * libsupc++/exception: Check correct value. * testsuite/18_support/exception/version.cc: New test. 2025-07-14 Jonathan Wakely * libsupc++/exception_ptr.h (make_exception_ptr): Return null for consteval when -fno-exceptions is used. (exception_ptr_cast): Likewise. Allow consteval path to work with -fno-rtti. 2025-07-11 Jakub Jelinek * libsupc++/exception_ptr.h: Implement C++26 P3748R0 - Inspecting exception_ptr should be constexpr. (std::exception_ptr_cast): Make constexpr, remove inline keyword. Add static_asserts for Mandates. For if consteval use std::rethrow_exception, catch it and return its address or nullptr. * testsuite/18_support/exception_ptr/exception_ptr_cast.cc (E::~E): Add constexpr. (G::G): Likewise. (test01): Likewise. Return bool and take bool argument, throw if the argument is true. Add static_assert(test01(false)). (main): Call test01(true) in try. 2025-07-11 Jonathan Wakely * include/bits/cpp_type_traits.h (__is_floating<__float128>): Do not depend on __STRICT_ANSI__. * include/bits/stl_algobase.h (__size_to_integer(__float128)): Likewise. * include/std/type_traits (__is_floating_point_helper<__float128>): Likewise. 2025-07-11 Jonathan Wakely PR libstdc++/96710 * include/bits/cpp_type_traits.h (__is_integer): Define explicit specializations for __int128. (__memcpyable_integer): Remove explicit specializations for __int128. * include/bits/iterator_concepts.h (incrementable_traits): Likewise. (__is_signed_int128, __is_unsigned_int128, __is_int128): Remove. (__is_integer_like, __is_signed_integer_like): Remove check for __int128. * include/bits/max_size_type.h: Remove all uses of __is_int128 in constraints. * include/bits/ranges_base.h (__to_unsigned_like): Remove overloads for __int128. (ranges::ssize): Remove special case for __int128. * include/bits/stl_algobase.h (__size_to_integer): Define __int128 overloads for strict modes. * include/ext/numeric_traits.h (__is_integer_nonstrict): Remove explicit specializations for __int128. * include/std/charconv (to_chars): Define overloads for __int128. * include/std/format (__format::make_unsigned_t): Remove. (__format::to_chars): Remove. * include/std/limits (numeric_limits): Define explicit specializations for __int128. * include/std/type_traits (__is_integral_helper): Likewise. (__make_unsigned, __make_signed): Likewise. 2025-07-10 Jakub Jelinek PR c++/117785 * include/bits/version.def (constexpr_exceptions): New. * include/bits/version.h: Regenerate. * libsupc++/exception (std::bad_exception::bad_exception): Add _GLIBCXX26_CONSTEXPR. (std::bad_exception::~bad_exception, std::bad_exception::what): For C++26 add constexpr and define inline. * libsupc++/exception.h (std::exception::exception, std::exception::operator=): Add _GLIBCXX26_CONSTEXPR. (std::exception::~exception, std::exception::what): For C++26 add constexpr and define inline. * libsupc++/exception_ptr.h (std::make_exception_ptr): Add _GLIBCXX26_CONSTEXPR. For if consteval use just throw with current_exception() in catch. (std::exception_ptr::exception_ptr(void*)): For C++26 add constexpr and define inline. (std::exception_ptr::exception_ptr()): Add _GLIBCXX26_CONSTEXPR. (std::exception_ptr::exception_ptr(const exception_ptr&)): Likewise. Use __builtin_eh_ptr_adjust_ref if consteval and compiler has it instead of _M_addref. (std::exception_ptr::exception_ptr(nullptr_t)): Add _GLIBCXX26_CONSTEXPR. (std::exception_ptr::exception_ptr(exception_ptr&&)): Likewise. (std::exception_ptr::operator=): Likewise. (std::exception_ptr::~exception_ptr): Likewise. Use __builtin_eh_ptr_adjust_ref if consteval and compiler has it instead of _M_release. (std::exception_ptr::swap): Add _GLIBCXX26_CONSTEXPR. (std::exception_ptr::operator bool): Likewise. (std::exception_ptr::operator==): Likewise. * libsupc++/nested_exception.h (std::nested_exception::nested_exception): Add _GLIBCXX26_CONSTEXPR. (std::nested_exception::operator=): Likewise. (std::nested_exception::~nested_exception): For C++26 add constexpr and define inline. (std::nested_exception::rethrow_if_nested): Add _GLIBCXX26_CONSTEXPR. (std::nested_exception::nested_ptr): Likewise. (std::_Nested_exception::_Nested_exception): Likewise. (std::throw_with_nested, std::rethrow_if_nested): Likewise. * libsupc++/new (std::bad_alloc::bad_alloc): Likewise. (std::bad_alloc::operator=): Likewise. (std::bad_alloc::~bad_alloc): For C++26 add constexpr and define inline. (std::bad_alloc::what): Likewise. (std::bad_array_new_length::bad_array_new_length): Add _GLIBCXX26_CONSTEXPR. (std::bad_array_new_length::~bad_array_new_length): For C++26 add constexpr and define inline. (std::bad_array_new_length::what): Likewise. * libsupc++/typeinfo (std::bad_cast::bad_cast): Add _GLIBCXX26_CONSTEXPR. (std::bad_cast::~bad_cast): For C++26 add constexpr and define inline. (std::bad_cast::what): Likewise. (std::bad_typeid::bad_typeid): Add _GLIBCXX26_CONSTEXPR. (std::bad_typeid::~bad_typeid): For C++26 add constexpr and define inline. (std::bad_typeid::what): Likewise. 2025-07-10 Jakub Jelinek * testsuite/22_locale/codecvt/codecvt_unicode.h (ucs2_to_utf8_out_error): Comment spelling fix: bellow -> below. (utf16_to_ucs2_in_error): Likewise. 2025-07-09 Jonathan Wakely * include/bits/stl_uninitialized.h (__uninitialized_default): Do not use optimized implementation for constexpr case. Use _GLIBCXX20_CONSTEXPR instead of _GLIBCXX26_CONSTEXPR. 2025-07-09 Jonathan Wakely * include/std/mdspan (mdspan): Add template keyword for dependent name. 2025-07-09 Jonathan Wakely PR libstdc++/120997 * include/std/span (span::first, span::last, span::subspan): Do not use braced-init-list for return statements. * testsuite/23_containers/span/120997.cc: New test. 2025-07-09 Paul Keir PR libstdc++/117403 * include/bits/shared_ptr.h (shared_ptr::owner_equal) (shared_ptr::owner_hash, weak_ptr::owner_equal) (weak_ptr::owner_hash): Define new member functions. * include/bits/shared_ptr_base.h (owner_equal, owner_hash): Define new structs. * include/bits/version.def (smart_ptr_owner_equality): Define. * include/bits/version.h: Regenerate. * include/std/memory: Added define for __glibcxx_want_smart_ptr_owner_equality. * testsuite/20_util/owner_equal/version.cc: New test. * testsuite/20_util/owner_equal/cmp.cc: New test. * testsuite/20_util/owner_equal/noexcept.cc: New test. * testsuite/20_util/owner_hash/cmp.cc: New test. * testsuite/20_util/owner_hash/noexcept.cc: New test. * testsuite/20_util/shared_ptr/observers/owner_equal.cc: New test. * testsuite/20_util/shared_ptr/observers/owner_hash.cc: New test. * testsuite/20_util/weak_ptr/observers/owner_equal.cc: New test. * testsuite/20_util/weak_ptr/observers/owner_hash.cc: New test. 2025-07-09 Mateusz Zych * include/bits/max_size_type.h (numeric_limits<__max_size_type>): New members. (numeric_limits<__max_diff_type>): Likewise. * testsuite/std/ranges/iota/max_size_type.cc: New test cases. 2025-07-09 Jonathan Wakely * src/c++17/memory_resource.cc: Adjust indentation of unnamed namespaces. (pool_sizes): Add comment. (choose_block_size): Move outside preprocessor group for gthreads targets. * testsuite/20_util/synchronized_pool_resource/118681.cc: Require gthreads. 2025-07-09 H.J. Lu * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. 2025-07-08 Jonathan Wakely PR libstdc++/118681 * testsuite/20_util/unsynchronized_pool_resource/118681.cc: Fix deallocate argument. 2025-07-08 Jonathan Wakely PR libstdc++/118681 * src/c++17/memory_resource.cc (choose_block_size): New function. (synchronized_pool_resource::do_allocate): Use choose_block_size to determine appropriate block size. (synchronized_pool_resource::do_deallocate): Likewise (unsynchronized_pool_resource::do_allocate): Likewise. (unsynchronized_pool_resource::do_deallocate): Likewise * testsuite/20_util/synchronized_pool_resource/118681.cc: New test. * testsuite/20_util/unsynchronized_pool_resource/118681.cc: New test. 2025-07-08 Jonathan Wakely * include/debug/forward_list (_Safe_forward_list<>::_M_swap): Adapt to _M_this() signature change. 2025-07-08 Tomasz Kamiński PR libstdc++/119861 * include/std/format (formatter<_Rg, _CharT>::set_separator) (formatter<_Rg, _CharT>::set_brackets): Constrain with (format_kind<_Rg> == range_format::sequence). * testsuite/std/format/ranges/pr119861_neg.cc: New test. 2025-07-08 Luc Grosheintz PR libstdc++/120914 * include/std/span (span): Update CTAD to enable integral constants [P3029R1]. * include/std/mdspan (extents): ditto. (mdspan): ditto. * testsuite/23_containers/span/deduction.cc: Test deduction guide. * testsuite/23_containers/mdspan/extents/misc.cc: ditto. * testsuite/23_containers/mdspan/mdspan.cc: ditto. 2025-07-08 Luc Grosheintz * testsuite/23_containers/span/contiguous_range_neg.cc: Silence warning about unused variable myspan. 2025-07-08 Luc Grosheintz PR libstdc++/107761 * include/bits/version.def (mdspan): Set to 202207 and remove no_stdname. * include/bits/version.h: Regenerate. * testsuite/23_containers/mdspan/version.cc: Test presence of feature test macro. 2025-07-08 Luc Grosheintz PR libstdc++/107761 * include/std/mdspan (mdspan): New class. * src/c++23/std.cc.in (mdspan): Add. * testsuite/23_containers/mdspan/class_mandate_neg.cc: New test. * testsuite/23_containers/mdspan/mdspan.cc: New test. * testsuite/23_containers/mdspan/layout_like.h: Add class LayoutLike which models a user-defined layout. * testsuite/23_containers/mdspan/out_of_bounds_neg.cc: New file. 2025-07-08 Luc Grosheintz * include/std/mdspan (__mdspan::__size): New function. 2025-07-08 Luc Grosheintz * testsuite/23_containers/mdspan/extents/custom_integer.cc: Delete IntLike and include "int_like.h". * testsuite/23_containers/mdspan/extents/int_like.h: Add IntLike. 2025-07-08 Luc Grosheintz * include/std/mdspan (extents): Check prerequisite of the ctor that static_extent(i) == dynamic_extent || extent(i) == other.extent(i). * testsuite/23_containers/mdspan/extents/class_mandates_neg.cc: Test the implemented prerequisite. * testsuite/23_containers/mdspan/extents/extents_mismatch_neg.cc: New file. 2025-07-08 Luc Grosheintz * include/std/mdspan: Check prerequisites of layout_*::operator() with _GLIBCXX_DEBUG_ASSERTs. * testsuite/23_containers/mdspan/layouts/debug/out_of_bounds_neg.cc: Add tests for prerequisites. 2025-07-08 Tomasz Kamiński * include/std/queue (formatter, _CharT>) (formatter, _CharT>): Add _GLIBCXX_RESOLVE_LIB_DEFECTS comments. 2025-07-08 François Dumont PR c++/116369 * config/abi/pre/gnu-versioned-namespace.ver: Use new const qualified symbols. * config/abi/pre/gnu.ver: Add new const qualified symbols. * include/debug/safe_base.h (_Safe_iterator_base::_M_sequence): Declare as pointer-to-const. (_Safe_iterator_base::_M_attach, _M_attach_single): New, take pointer-to-const _Safe_sequence_base. (_Safe_sequence_base::_M_detach_all, _M_detach_singular, _M_revalidate_singular) (_M_swap, _M_get_mutex): New, const qualified. (_Safe_sequence_base::_M_attach, _M_attach_single, _M_detach, _M_detach_single): const qualify. * include/debug/safe_container.h (_Safe_container<>::_M_cont): Add const qualifier. (_Safe_container<>::_M_swap_base): New. (_Safe_container(_Safe_container&&, const _Alloc&, std::false_type)): Adapt to use latter. (_Safe_container<>::operator=(_Safe_container&&)): Likewise. (_Safe_container<>::_M_swap): Likewise and take parameter as const reference. * include/debug/safe_unordered_base.h (_Safe_local_iterator_base::_M_safe_container): New. (_Safe_local_iterator_base::_Safe_local_iterator_base): Take _Safe_unordered_container_base as pointer-to-const. (_Safe_unordered_container_base::_M_attach, _M_attach_single): New, take container as _Safe_unordered_container_base pointer-to-const. (_Safe_unordered_container_base::_M_local_iterators, _M_const_local_iterators): Add mutable. (_Safe_unordered_container_base::_M_detach_all, _M_swap): New, const qualify. (_Safe_unordered_container_base::_M_attach_local, _M_attach_local_single) (_M_detach_local, _M_detach_local_single): Add const qualifier. * include/debug/safe_unordered_container.h (_Safe_unordered_container::_M_self()): New. * include/debug/safe_unordered_container.tcc (_Safe_unordered_container::_M_invalidate_if, _M_invalidated_local_if): Use latter. * include/debug/safe_iterator.h (_Safe_iterator<>::_M_attach, _M_attach_single): Take _Safe_sequence_base as pointer-to-const. (_Safe_iterator<>::_M_get_sequence): Add const_cast and comment about it. * include/debug/safe_local_iterator.h (_Safe_local_iterator<>): Replace usages of _M_sequence member by _M_safe_container(). (_Safe_local_iterator<>::_M_attach, _M_attach_single): Take _Safe_unordered_container_base as pointer-to-const. (_Safe_local_iterator<>::_M_get_sequence): Rename into... (_Safe_local_iterator<>::_M_get_ucontainer): ...this. Add necessary const_cast and comment to explain it. (_Safe_local_iterator<>::_M_is_begin, _M_is_end): Adapt. * include/debug/safe_local_iterator.tcc: Adapt. * include/debug/safe_sequence.h (_Safe_sequence<>::_M_invalidate_if, _M_transfer_from_if): Add const qualifier. * include/debug/safe_sequence.tcc: Adapt. * include/debug/deque (std::__debug::deque::erase): Adapt to use new const qualified methods. * include/debug/formatter.h: Adapt. * include/debug/forward_list (_Safe_forward_list::_M_this): Add const qualification and return pointer for consistency with 'this' keyword. (_Safe_forward_list::_M_swap_aux): Rename into... (_Safe_forward_list::_S_swap_aux): ...this and take sequence as const reference. (forward_list<>::resize): Adapt to use const methods. * include/debug/list (list<>::resize): Likewise. * src/c++11/debug.cc: Adapt to const qualification. * testsuite/util/testsuite_containers.h (forward_members_unordered::forward_members_unordered): Add check on local_iterator conversion to const_local_iterator. (forward_members::forward_members): Add check on iterator conversion to const_iterator. * testsuite/23_containers/unordered_map/const_container.cc: New test case. * testsuite/23_containers/unordered_multimap/const_container.cc: New test case. * testsuite/23_containers/unordered_multiset/const_container.cc: New test case. * testsuite/23_containers/unordered_set/const_container.cc: New test case. * testsuite/23_containers/vector/debug/mutex_association.cc: Adapt. 2025-07-07 Jonathan Wakely PR libstdc++/120949 * include/bits/stl_iterator.h (__normal_iterator): Fix order of always_inline and nodiscard attributes for Clang compatibility. 2025-07-07 Jonathan Wakely * testsuite/util/testsuite_hooks.h (VERIFY): Define as variadic macro. * testsuite/ext/verify_neg.cc: New test. 2025-07-07 Jonathan Wakely * include/std/mdspan (__mapping_of): Add template keyword. 2025-07-07 XU Kailiang Tomasz Kaminski PR libstdc++/117214 * include/bits/chrono_io.h (_ChronoSpec::_M_time_only): Remove. (_ChronoSpec::_M_time_point): Define. (__formatter_chrono::_M_parse): Use __parts to determine interpretation of j. (__formatter_chrono::_M_check_ok): Define. (__formatter_chrono::_M_format_to): Invoke _M_check_ok. (__formatter_chrono::_M_a_A, __formatter_chrono::_M_b_B): Move exception throwing to _M_check_ok. (__formatter_chrono::_M_j): Use _M_needs to define interpretation. (__formatter_duration::_S_spec_for): Set _M_time_point. * testsuite/std/time/format/format.cc: Test for exception for !ok() months/weekday. * testsuite/std/time/format/pr117214_custom_timeput.cc: New test. 2025-07-07 Tomasz Kamiński PR libstdc++/120976 * include/std/format (formatter<__float128, _Char_T): Define if _GLIBCXX_FORMAT_F128 == 2. 2025-07-06 Patrick Palka * include/bits/ranges_algo.h (shift_left, shift_right): Guard with __glibcxx_shift >= 201806L. (ranges::__shift_left_fn, ranges::shift_left): Define for C++23. (ranges::__shift_right_fn, ranges::shift_right): Likewise. * include/bits/version.def (shift): Update for C++23. * include/bits/version.h: Regenerate. * src/c++23/std.cc.in: Add ranges::shift_left/right. * testsuite/25_algorithms/shift_left/constrained.cc: New test, based off of 1.cc. * testsuite/25_algorithms/shift_right/constrained.cc: New test, based off of 1.cc. 2025-07-04 Jonathan Wakely * include/bits/chrono_io.h (__formatter_duration::_S_spec_for): Add default case to switch and use __builtin_unreachable. 2025-07-04 Jonathan Wakely * include/bits/stl_algobase.h (__size_to_integer): Move misplaced unsigned keyword on __size_to_integer overloads for __GLIBCXX_TYPE_INT_N_3 integer type. 2025-07-03 Nathan Myers * include/bits/version.def: Fix typo. * include/bits/version.h: Rebuilt. 2025-07-03 Patrick Palka PR libstdc++/120934 * include/std/ranges (concat_view::end): Refine condition for returning an iterator instead of default_sentinel as per the updated P/R for LWG 4166. * testsuite/std/ranges/concat/1.cc (test05): New test. 2025-07-03 Nathan Myers PR libstdc++/119742 * include/bits/version.def: Add preprocessor symbol. * include/bits/version.h: Add preprocessor symbol. * include/std/bitset: Add constructor. * testsuite/20_util/bitset/cons/1.cc: Fix. * testsuite/20_util/bitset/cons/6282.cc: Fix. * testsuite/20_util/bitset/cons/string_view.cc: Test new ctor. * testsuite/20_util/bitset/cons/string_view_wide.cc: Test new ctor. 2025-07-03 Jonathan Wakely PR libstdc++/120931 * include/bits/stl_uninitialized.h (__uninitialized_fill): Fix typo resulting in call to __do_uninit_copy instead of __do_uninit_fill. * testsuite/20_util/specialized_algorithms/uninitialized_fill/120931.cc: New test. 2025-07-02 Jonathan Wakely * include/bits/stl_iterator.h (__normal_iterator): Make all non-member operators hidden friends, except ... (operator<=>(__normal_iterator, __normal_iterator)): Remove. * src/c++11/string-inst.cc: Remove explicit instantiations of operators that are no longer templates. * src/c++23/std.cc.in (__gnu_cxx): Do not export operators for __normal_iterator. 2025-07-02 Nathan Myers PR libstdc++/119744 * include/std/ranges: View ctors become explicit. 2025-07-01 Patrick Palka PR libstdc++/120789 * include/bits/ranges_algo.h (__remove_if_fn::operator()): Use ranges::iter_move(iter) instead of std::move(*iter). * testsuite/25_algorithms/remove_if/120789.cc: New test. 2025-07-01 Patrick Palka PR libstdc++/120789 * include/bits/ranges_algo.h (__unique_fn::operator()): Use ranges::iter_move(iter) instead of std::move(*iter). * testsuite/25_algorithms/unique/120789.cc: New test. 2025-07-01 Luc Grosheintz * include/std/mdspan (default_accessor): New class. * src/c++23/std.cc.in: Register default_accessor. * testsuite/23_containers/mdspan/accessors/default.cc: New test. * testsuite/23_containers/mdspan/accessors/default_neg.cc: New test. 2025-06-27 Patrick Palka PR libstdc++/100795 * include/bits/ranges_algo.h (shuffle_fn::operator()): Reimplement directly, based on the stl_algo.h implementation. * testsuite/25_algorithms/shuffle/constrained.cc (test02): New test. 2025-06-27 Patrick Palka PR libstdc++/100795 * include/bits/ranges_algo.h (__sample_fn::operator()): Reimplement the forward_iterator branch directly, based on the stl_algo.h implementation. Add explicit cast to _Out's difference_type in the !forward_iterator branch. * testsuite/25_algorithms/sample/constrained.cc (test02): New test. 2025-06-27 Patrick Palka PR libstdc++/100795 * include/bits/ranges_algo.h (__detail::__introselect): New, based on the stl_algo.h implementation. (nth_element_fn::operator()): Reimplement in terms of the above. * testsuite/25_algorithms/nth_element/constrained.cc: 2025-06-27 Patrick Palka PR libstdc++/100795 * include/bits/ranges_algo.h (__detail::__find_if_not_n): New, based on the stl_algo.h implementation. (__detail::__stable_partition_adaptive): Likewise. (__stable_partition_fn::operator()): Reimplement in terms of the above. * testsuite/25_algorithms/stable_partition/constrained.cc (test03): New test. 2025-06-27 Patrick Palka PR libstdc++/100795 * include/bits/ranges_algo.h (__detail::__move_merge): New, based on the stl_algo.h implementation. (__detail::__merge_sort_loop): Likewise. (__detail::__chunk_insertion_sort): Likewise. (__detail::__merge_sort_with_buffer): Likewise. (__detail::__stable_sort_adaptive): Likewise. (__detail::__stable_sort_adaptive_resize): Likewise. (__detail::__inplace_stable_sort): Likewise. (__stable_sort_fn::operator()): Reimplement in terms of the above. * testsuite/25_algorithms/stable_sort/constrained.cc: 2025-06-27 Patrick Palka PR libstdc++/100795 * include/bits/ranges_algo.h (__detail::__move_merge_adaptive): New, based on the stl_algo.h implementation. (__detail::__move_merge_adaptive_backward): Likewise. (__detail::__rotate_adaptive): Likewise. (__detail::__merge_adaptive): Likewise. (__detail::__merge_adaptive_resize): Likewise. (__detail::__merge_without_buffer): Likewise. (__inplace_merge_fn::operator()): Reimplement in terms of the above. * testsuite/25_algorithms/inplace_merge/constrained.cc (test03): New test. 2025-06-27 Patrick Palka PR libstdc++/100795 PR libstdc++/118209 * include/bits/max_size_type.h (__bit_width): New explicit specialization for __max_size_type. * include/bits/ranges_algo.h (__detail::__move_median_to_first): New, based on the stl_algo.h implementation. (__detail::__unguarded_liner_insert): Likewise. (__detail::__insertion_sort): Likewise. (__detail::__sort_threshold): Likewise. (__detail::__unguarded_insertion_sort): Likewise. (__detail::__final_insertion_sort): Likewise. (__detail::__unguarded_partition): Likewise. (__detail::__unguarded_partition_pivot): Likewise. (__detail::__heap_select): Likewise. (__detail::__partial_sort): Likewise. (__detail::__introsort_loop): Likewise. (__sort_fn::operator()): Reimplement in terms of the above. * testsuite/25_algorithms/sort/118209.cc: New test. * testsuite/25_algorithms/sort/constrained.cc (test03): New test. 2025-06-27 Patrick Palka PR libstdc++/100795 * include/bits/ranges_algo.h (__detail::__push_heap): New, based on the stl_heap.h implementation. (__push_heap_fn::operator()): Reimplement in terms of the above. (__detail::__adjust_heap): New, based on the stl_heap.h implementation. (__deatil::__pop_heap): Likewise. (__pop_heap_fn::operator()): Reimplement in terms of the above. (__make_heap_fn::operator()): Likewise. (__sort_heap_fn::operator()): Likewise. * testsuite/25_algorithms/heap/constrained.cc (test03): New test. 2025-06-27 Tomasz Kamiński PR libstdc++/110739 * include/bits/chrono_io.h (__formatter_chrono::_S_empty_fs): Define. (__formatter_chrono::_S_str_d2): Use _S_str_d3 for 3+ digits and place allways_inline attribute after comment. (__formatter_chrono::_S_str_d3): Extracted from _S_str_d2. (__formatter_chrono::_M_H_I, __formatter_chrono::_M_R_X): Replace _S_empty_spec with _S_empty_fs(). (__formatter_chrono::_M_j): Likewise and use _S_str_d3 in common case. (__format::operator-(_ChronoParts, _ChronoParts)) (__format::operator-=(_ChronoParts, _ChronoParts)) (__formatter_chrono::_S_fill_two_digits) (__formatter_chrono::_S_str_d1): Place always_inline attribute after comment. 2025-06-27 Tomasz Kamiński PR libstdc++/110739 * include/bits/chrono_io.h (__formatter_chrono::_M_format_to): Rename _Out to _OutIter for consistency, and update calls to specifier functions. (__formatter_chrono::_M_wi, __formatter_chrono::_M_C_y_Y) (__formatter_chrono::_M_D_x, __formatter_chrono::_M_d_e) (__formatter_chrono::_M_F, __formatter_chrono::_M_g_G) (__formatter_chrono::_M_H_I, __formatter_chrono::_M_j) (__formatter_chrono::_M_m, __formatter_chrono::_M_M) (__formatter_chrono::_M_q, __formatter_chrono::_M_R_X) (__formatter_chrono::_M_u_w, __formatter_chrono::_M_U_V_W) (__formatter_chrono::_M_z, __formatter_chrono::_M_z): Remove _FormatContext parameter, and introduce _OutIter for __out type. (__formatter_chrono::_M_a_A, __formatter_chrono::_M_B_b) (__formatter_chrono::_M_p, __formatter_chrono::_M_Q) (__formatter_chrono::_M_r, __formatter_chrono::_M_S) (__formatter_chrono::_M_subsecs, __formatter_chrono::_M_T): Introduce separate _OutIter template parameter for __out. (__formatter_chrono::_M_c, __formatter_chrono::_M_T): Likewise, and adjust calls to specifiers functions. * testsuite/std/time/format/empty_spec.cc: Make underlying type for Rep configurable. 2025-06-27 Iain Sandoe * config/abi/pre/gnu.ver: Keep the closing brace of the CXXABI_1.3.17 symbol group together with the identifier for the inherited group. 2025-06-26 Tomasz Kamiński PR libstdc++/110739 * include/bits/chrono_io.h (__formatter_chrono::_M_use_locale_fmt): Define. (__formatter_chrono::_M_locale_fmt): Moved to front of the class. (__formatter_chrono::_M_format_to): Construct and initialize struct tm and call _M_locale_fmt if needed. (__formatter_chrono::_M_c_r_x_X): Split into separate methods. (__formatter_chrono::_M_c, __formatter_chrono::_M_r): Define. (__formatter_chrono::_M_D): Renamed to _M_D_x. (__formatter_chrono::_M_D_x): Renamed from _M_D. (__formatter_chrono::_M_R_T): Split into _M_R_X and _M_T. (__formatter_chrono::_M_R_X): Extracted from _M_R_T. (__formatter_chrono::_M_T): Define in terms of _M_R_X and _M_subsecs. (__formatter_chrono::_M_subsecs): Extracted from _M_S. (__formatter_chrono::_M_S): Replaced __mod with __subs argument, removed _M_locale_fmt call, and delegate to _M_subsecs. (__formatter_chrono::_M_C_y_Y, __formatter_chrono::_M_d_e) (__formatter_chrono::_M_H_I, __formatter_chrono::_M_m) (__formatter_chrono::_M_u_w, __formatter_chrono::_M_U_V_W): Remove __mod argument and call to _M_locale_fmt. 2025-06-26 Tomasz Kamiński PR libstdc++/110739 * include/bits/chrono_io.h (__format::__no_timezone_available): Removed, replaced with separate throws in formatter for __local_time_fmt (__format::_ChronoParts): Defined additional enumertors and declared as enum class. (__format::operator&(_ChronoParts, _ChronoParts)) (__format::operator&=(_ChronoParts&, _ChronoParts)) (__format::operator-(_ChronoParts, _ChronoParts)) (__format::operator-=(_ChronoParts&, _ChronoParts)) (__format::operator==(_ChronoParts, decltype(nullptr))) (_ChronoSpec::_M_time_only, _ChronoSpec::_M_floating_point_rep) (_ChronoSpec::_M_custom_rep, _ChronoSpec::_M_needed) (_ChronoSpec::_M_needs, __format::_ChronoData): Define. (__format::__formatter_chrono): Redefine to accept _ChronoData. (__formatter_chrono::_M_format_to_ostream): Moved to __formatter_duration. (__format::__formatter_duration): Define. (__formatter_chrono_info::format): Pass value-constructed _ChronoData. (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter): Construct _ChronoData in format, and configure _M_needed in _ChronoSpec. (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>): Reworked in terms of __formatter_duration and _ChronoData. (std::formatter, _CharT>): Removed. (_Parser<_Duration>::operator()): Adjusted for _ChronoParts being enum class. * include/std/chrono (__detail::__utc_leap_second): Removed, replaced with simply bumping _M_seconds in _ChronoData. * testsuite/std/time/format/empty_spec.cc: Updated %S integral ouput. 2025-06-26 Jakub Jelinek * include/bits/version.def (exception_ptr_cast): Add. * include/bits/version.h: Regenerate. * libsupc++/exception: Define __glibcxx_want_exception_ptr_cast before including bits/version.h. * libsupc++/exception_ptr.h (std::exception_ptr_cast): Define. (std::__exception_ptr::exception_ptr::_M_exception_ptr_cast): Declare. * libsupc++/eh_ptr.cc (std::__exception_ptr::exception_ptr::_M_exception_ptr_cast): Define. * src/c++23/std.cc.in (std::exception_ptr_cast): Export. * config/abi/pre/gnu.ver: Export _ZNKSt15__exception_ptr13exception_ptr21_M_exception_ptr_castERKSt9type_info at CXXABI_1.3.17. * testsuite/util/testsuite_abi.cc (check_version): Allow CXXABI_1.3.17. * testsuite/18_support/exception_ptr/exception_ptr_cast.cc: New test. 2025-06-26 Jakub Jelinek * include/bits/version.def (type_order): New. * include/bits/version.h: Regenerate. * libsupc++/compare: Define __glibcxx_want_type_order before including bits/version.h. (std::type_order, std::type_order_v): New trait and template variable. * src/c++23/std.cc.in (std::type_order, std::type_order_v): Export. * testsuite/18_support/comparisons/type_order/1.cc: New test. 2025-06-25 Tomasz Kamiński * testsuite/std/time/format/precision.cc: New tests. 2025-06-25 Tomasz Kamiński PR libstdc++/120650 * include/bits/chrono_io.h (formatter::parse): Call _M_parse with only Month being available. * testsuite/std/time/format/data_not_present_neg.cc: New test. 2025-06-24 Patrick Palka Jonathan Wakely PR libstdc++/120717 * include/std/type_traits (__maybe_complete_object_type): New helper trait, factored out from ... (__is_complete_or_unbounded): ... here. Only check sizeof on a __maybe_complete_object_type type. Fix formatting. * testsuite/20_util/is_complete_or_unbounded/120717.cc: New test. 2025-06-16 Jason Merrill * testsuite/20_util/is_complete_or_unbounded/memoization.cc * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc: Expect -Wsfinae-incomplete. 2025-06-13 Jonathan Wakely PR libstdc++/120397 * include/bits/stl_uninitialized.h (_UninitDestroyGuard): Add new member function _S_destroy and call it from the destructor (for C++17 only). * testsuite/20_util/specialized_algorithms/uninitialized_default_construct/120397.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/120397.cc: New test. 2025-06-13 Tomasz Kamiński PR libstdc++/120648 * include/bits/chrono_io.h (__formatter_chrono::_M_format_to): Handle %c, %r, %x and %X by passing them to _M_c_r_x_X. (__formatter_chrono::_M_c_r_x_X): Reworked from _M_c. (__formatter_chrono::_M_c): Renamed into above. (__formatter_chrono::_M_r, __formatter_chrono::_M_x) (__formatter_chrono::_M_X): Removed. * testsuite/std/time/format/pr117214.cc: New tests for %r, %x, %X with date, time and durations. 2025-06-13 Patrick Palka * include/bits/ranges_algo.h (__detail::__by_ref_or_value_fn): New. (__detail::_Comp_proj): New. (__detail::__make_comp_proj): Use it instead. (__detail::_Pred_proj): New. (__detail::__make_pred_proj): Use it instead. 2025-06-13 Giuseppe D'Angelo PR c++/120644 * include/std/optional (format_kind): Do not use `auto`. 2025-06-13 Tomasz Kamiński * testsuite/23_containers/vector/bool/format.cc: Replaced _CharT with CharT. * testsuite/std/format/debug.cc: Likewise. * testsuite/std/format/ranges/adaptors.cc: Likewise. * testsuite/std/format/ranges/formatter.cc: Likewise. * testsuite/std/format/ranges/map.cc: Likewise. * testsuite/std/format/ranges/sequence.cc: Likewise. * testsuite/std/format/ranges/string.cc: Likewise. * testsuite/std/format/tuple.cc: Likewise. * testsuite/std/time/format/empty_spec.cc: Likewise. * testsuite/std/time/format/pr120114.cc: Likewise. * testsuite/std/time/format/pr120481.cc: Likewise. * testsuite/std/time/format/precision.cc: Likewise. 2025-06-13 Tomasz Kamiński * include/bits/chrono_io.h (__formatter_chrono::_M_format): Remove handling of empty _M_chrono_specs. (__formatter_chrono::_M_format_to_ostream): Changed to accept only chrono::duration and made public. (std::formatter, _CharT>): Configure __defSpec and handle empty chrono-spec locally. 2025-06-13 Tomasz Kamiński * include/bits/chrono_io.h (__format::__formatter_chrono_info) [_GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI]: Define. (std::formatter) (std::formatter): Delegate to __format::__formatter_chrono_info. (std::operator<<(basic_ostream<_CharT, _Traits>& const sys_info&)): Use format on sys_info with empty format spec. 2025-06-13 Tomasz Kamiński * testsuite/std/time/format/whitespace.cc: New test. 2025-06-12 Giuseppe D'Angelo PR libstdc++/119496 * include/bits/stl_algo.h: Adjust calls to requested_size. * include/bits/stl_tempbuf.h (requested_size): Rename with an _M_ prefix. * testsuite/17_intro/names.cc: Add a #define for requested_size. 2025-06-12 Giuseppe D'Angelo * include/bits/formatfwd.h (format_kind): Move the definition (and some supporting code) from . * include/std/format (format_kind): Likewise. * include/bits/version.def (optional_range_support): Add the feature-testing macro. * include/bits/version.h: Regenerate. * include/std/optional (iterator, const_iterator, begin, end): Add range support. (enable_view): Specialize for std::optional. (format_kind): Specialize for std::optional. * testsuite/20_util/optional/range.cc: New test. * testsuite/20_util/optional/version.cc: Test the new feature-testing macro. 2025-06-12 Tomasz Kamiński * include/bits/chrono_io.h (_ChronoFormats::_S_ftz) (_ChronoFormats::_S_ft, _ChronoFormats::_S_t): Define. (__formatter_chrono::_M_format_to_ostream): Remove handling for time_points. (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>) (std::formatter, _CharT>): Define __defSpec, and pass it as argument to _M_prase and constructor of __formatter_chrono. 2025-06-12 Tomasz Kamiński * include/bits/chrono_io.h (__format::_ChronoFormats): Define. (__formatter_chrono::__formatter_chrono()) (__formatter_chrono::__formatter_chrono(_ChronoSpec<_CharT>)): Define. (__formatter_chrono::_M_parse): Add parameter with default spec, and merge it with new values. Handle '%\0' as weekday index specifier. (__formatter_chrono::_M_a_A, __formatter_chrono::_M_b_B) (__formatter_chrono::_M_C_y_Y, __formatter_chrono::_M_d_e) (__formatter_chrono::_M_F): Support _M_debug flag. (__formatter_chrono::_M_wi, __formatter_chrono::_S_weekday_index): Define. (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter) (std::formatter): Define __defSpec, and pass it as argument to _M_parse and constructor of __formatter_chrono. 2025-06-12 Tomasz Kamiński * include/std/mdspan (__mdspan::__mapping_alike): Rename template parameter from M to _M_p. (layout_right::mapping): Replace class with typename in template head. (layout_stride::mapping): Fix typo in comment. * testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc: Changed B to function. 2025-06-12 Luc Grosheintz * include/std/mdspan (layout_left): Strengthen the exception guarantees of layout_left::mapping(layout_stride::mapping). * testsuite/23_containers/mdspan/layouts/ctors.cc: Simplify tests to reflect the change. 2025-06-12 Luc Grosheintz * testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc: Add tests for layout_stride. * testsuite/23_containers/mdspan/layouts/ctors.cc: Add test for layout_stride and the interaction with other layouts. * testsuite/23_containers/mdspan/layouts/empty.cc: Ditto. * testsuite/23_containers/mdspan/layouts/mapping.cc: Ditto. * testsuite/23_containers/mdspan/layouts/stride.cc: New test. 2025-06-12 Luc Grosheintz * include/std/mdspan (layout_stride): New class. * src/c++23/std.cc.in: Add layout_stride. 2025-06-12 Luc Grosheintz * testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc: Add tests for layout_right. * testsuite/23_containers/mdspan/layouts/ctors.cc: Add tests for layout_right and the interaction with layout_left. * testsuite/23_containers/mdspan/layouts/empty.cc: ditto. * testsuite/23_containers/mdspan/layouts/mapping.cc: ditto. 2025-06-12 Luc Grosheintz * include/std/mdspan (layout_right): New class. * src/c++23/std.cc.in: Add layout_right. 2025-06-12 Luc Grosheintz * testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc: New test. * testsuite/23_containers/mdspan/layouts/ctors.cc: New test. * testsuite/23_containers/mdspan/layouts/empty.cc: New test. * testsuite/23_containers/mdspan/layouts/mapping.cc: New test. 2025-06-12 Luc Grosheintz * include/std/mdspan (layout_left): New class. * src/c++23/std.cc.in: Add layout_left. 2025-06-12 Luc Grosheintz * include/std/mdspan(__mdspan::_ExtentsStorage): Change name of private member _M_dynamic_extens to _M_dyn_exts. (extents): Change name of private member from _M_dynamic_extents to _M_exts. Fix two instances of whitespace errors. * testsuite/23_containers/mdspan/extents/ctor_default.cc: Fix integer comparison with cmp_equal. 2025-06-12 Jonathan Wakely * doc/xml/manual/test.xml: Improve discussion of copyright notices in new test cases. * doc/html/manual/test.html: Regenerate. 2025-06-12 Jonathan Wakely * scripts/create_testsuite_files: Remove incorrect comment about filtering out wchar_t tests. 2025-06-12 Jonathan Wakely PR libstdc++/120625 * include/std/format (__format::__disabled): Remove. (__formatter_disabled): New type. (formatter, formatter) (formatter, formatter) (formatter): Use __formatter_disabled as base class instead of formatter<__disabled, wchar_t>. * testsuite/std/format/formatter/120625.cc: New test. 2025-06-11 Jonathan Wakely * doc/doxygen/user.cfg.in (PREDEFINED): Remove -D prefixes from some macros. Define _GLIBCXX_USE_BUILTIN_TRAIT and _GLIBCXX_HAVE_ICONV macros. 2025-06-11 Jonathan Wakely * libsupc++/exception: Remove redundant parentheses and adjust whitespace. 2025-06-11 Jonathan Wakely * include/std/type_traits: Restore @cond and @endcond balance. 2025-06-11 Tomasz Kamiński * testsuite/std/time/format/empty_spec.cc: New tests. * testsuite/std/time/format/precision.cc: New test. 2025-06-11 Jonathan Wakely * include/bits/stl_construct.h: Replace std::__addressof with std::addressof in code that doesn't need to compile as C++98. Replace std::__is_constant_evaluated with std::is_constant_evaluated in code that doesn't need to compile as C++17 or earlier. * include/bits/stl_uninitialized.h: Likewise for __addressof. 2025-06-11 Jonathan Wakely * doc/xml/manual/test.xml: Remove note about unused 'test' variables for old definition of VERIFY. * doc/html/manual/test.html: Regenerate. * testsuite/experimental/net/buffer/arithmetic.cc: Remove unused variable. * testsuite/experimental/net/buffer/const.cc: Likewise. * testsuite/experimental/net/buffer/mutable.cc: Likewise. * testsuite/experimental/net/buffer/size.cc: Likewise. * testsuite/experimental/net/timer/waitable/cons.cc: Likewise. * testsuite/experimental/net/timer/waitable/dest.cc: Likewise. * testsuite/experimental/net/timer/waitable/ops.cc: Likewise. * testsuite/ext/special_functions/airy_ai/check_value.cc: Likewise. * testsuite/ext/special_functions/airy_bi/check_value.cc: Likewise. * testsuite/ext/special_functions/conf_hyperg/check_value.cc: Likewise. * testsuite/ext/special_functions/hyperg/check_value.cc: Likewise. * testsuite/special_functions/01_assoc_laguerre/check_value.cc: Likewise. * testsuite/special_functions/02_assoc_legendre/check_value.cc: Likewise. * testsuite/special_functions/02_assoc_legendre/pr86655.cc: Likewise. * testsuite/special_functions/03_beta/check_value.cc: Likewise. * testsuite/special_functions/04_comp_ellint_1/check_value.cc: Likewise. * testsuite/special_functions/05_comp_ellint_2/check_value.cc: Likewise. * testsuite/special_functions/06_comp_ellint_3/check_value.cc: Likewise. * testsuite/special_functions/07_cyl_bessel_i/check_value.cc: Likewise. * testsuite/special_functions/08_cyl_bessel_j/check_value.cc: Likewise. * testsuite/special_functions/09_cyl_bessel_k/check_value.cc: Likewise. * testsuite/special_functions/10_cyl_neumann/check_value.cc: Likewise. * testsuite/special_functions/11_ellint_1/check_value.cc: Likewise. * testsuite/special_functions/12_ellint_2/check_value.cc: Likewise. * testsuite/special_functions/13_ellint_3/check_value.cc: Likewise. * testsuite/special_functions/14_expint/check_value.cc: Likewise. * testsuite/special_functions/15_hermite/check_value.cc: Likewise. * testsuite/special_functions/16_laguerre/check_value.cc: Likewise. * testsuite/special_functions/17_legendre/check_value.cc: Likewise. * testsuite/special_functions/18_riemann_zeta/check_value.cc: Likewise. * testsuite/special_functions/19_sph_bessel/check_value.cc: Likewise. * testsuite/special_functions/20_sph_legendre/check_value.cc: Likewise. * testsuite/special_functions/20_sph_legendre/pr86655.cc: Likewise. * testsuite/special_functions/21_sph_neumann/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc: Likewise. * testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc: Likewise. 2025-06-11 Jonathan Wakely * include/std/sstream: Adjust whitespace. 2025-06-11 Jonathan Wakely PR libstdc++/120390 * include/bits/stl_construct.h (_Destroy_aux::__destroy_n): New static member function. (_Destroy_aux::__destroy_n): Likewise. (_Destroy_n_aux): Remove. (_Destroy(ForwardIterator, ForwardIterator)): Remove static_assert. Use is_trivially_destructible instead of __has_trivial_destructor. (_Destroy_n): Likewise. Use _Destroy_aux::__destroy_n instead of _Destroy_n_aux::__destroy_n. * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc: Adjust dg-error strings. Move destroy_n tests to ... * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc: New test. * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: Adjust dg-error strings. * testsuite/23_containers/vector/cons/destructible_neg.cc: Likewise. 2025-06-11 Jonathan Wakely * testsuite/27_io/basic_istringstream/cons/char/string_view.cc: Only check get_allocator() for new string ABI. * testsuite/27_io/basic_ostringstream/cons/char/string_view.cc: Likewise. * testsuite/27_io/basic_stringbuf/cons/char/string_view.cc: Likewise. * testsuite/27_io/basic_stringstream/cons/char/string_view.cc: Likewise. 2025-06-10 Patrick Palka * include/bits/max_size_type.h (__max_size_type::_M_val): Make public instead of private. (__max_size_type::_M_msb): Likewise. (__max_diff_type::_M_rep): Likewise. * testsuite/std/ranges/iota/max_size_type.cc: Verify __max_diff_type and __max_size_type are structural. 2025-06-10 Yihan Wang Jonathan Wakely * include/std/tuple (__can_make_from_tuple): New variable template. (__make_from_tuple_impl): Add static_assert. (make_from_tuple): Constrain using __can_make_from_tuple. * testsuite/20_util/tuple/dr3528.cc: New test. 2025-06-09 Nathan Myers PR libstdc++/119741 * include/std/sstream: full implementation, really just decls, requires clause and plumbing. * include/bits/version.def, include/bits/version.h: new preprocessor symbol __cpp_lib_sstream_from_string_view. * testsuite/27_io/basic_stringbuf/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_istringstream/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_ostringstream/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_stringstream/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc: New tests. * testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc: New tests. * testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc: New tests. * testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc: New tests. 2025-06-08 John David Anglin * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. 2025-06-06 Jonathan Wakely * testsuite/30_threads/semaphore/1.cc: Check type properties and max() values. * testsuite/30_threads/semaphore/3.cc: New test. * testsuite/30_threads/semaphore/cons_neg.cc: New test. 2025-06-06 Jonathan Wakely * include/bits/semaphore_base.h (_Select_semaphore_impl): Rename to _Semaphore_impl and use std::conditional_t instead of an immediately invoked lambda expression. * include/std/semaphore (counting_semaphore): Adjust to use new name. 2025-06-06 Jonathan Wakely * testsuite/30_threads/barrier/1.cc: Require hosted. Only require gthreads for non-linux targets. * testsuite/30_threads/barrier/2.cc: Likewise. * testsuite/30_threads/semaphore/1.cc: Likewise. * testsuite/30_threads/semaphore/2.cc: Likewise. * testsuite/30_threads/semaphore/cons.cc: Likewise. * testsuite/30_threads/semaphore/least_max_value_neg.cc: Likewise. * testsuite/30_threads/semaphore/try_acquire.cc: Likewise. 2025-06-06 Patrick Palka PR libstdc++/120432 * include/std/flat_map (flat_map::operator[]): Make the non-template overloads call try_emplace directly. Remove non-standard same_as constraint on the template overload. * testsuite/23_containers/flat_map/1.cc (test08): New test. 2025-06-06 Jonathan Wakely * include/bits/atomic_timed_wait.h (__atomic_wait_address_until_v): Add assertion to prevent use with proxy waits. (__atomic_wait_address_for_v): Likewise. * include/bits/atomic_wait.h (__atomic_wait_address_v): Likewise. 2025-06-06 Jonathan Wakely * include/bits/atomic_wait.h (__atomic_wait_address_v): Add bare wait flag. * include/bits/semaphore_base.h (__semaphore_base): Rename to __semaphore_impl. Replace local variable and predicate lambdas with _Available struct. (__platform_semaphore_impl): New class template. (__semaphore_impl): Remove alias template. (_Select_semaphore_impl): New alias template. * include/std/semaphore (counting_semaphore): Use _Select_semaphore_impl. 2025-06-06 Tomasz Kamiński PR libstdc++/120565 * include/bits/chrono_io.h (operator<<(basic_ostream<_CharT, _Traits>&, const sys_info&)) (operator<<(basic_ostream<_CharT, _Traits>&, const local_info&)): Support wchar_t as _CharT. * testsuite/std/time/format/empty_spec.cc: Instantiated test_infos for wchar_t and increase timeout. 2025-06-06 Tomasz Kamiński * testsuite/std/time/format/empty_spec.cc: New tests and increased timeout. 2025-06-05 Jonathan Wakely PR libstdc++/120548 * include/std/format (__formatter_fp::_M_localize): Do not include a leading sign character in the string to be grouped. * testsuite/std/format/functions/format.cc: Check grouping when sign is present in the output. 2025-06-05 Tomasz Kamiński PR libstdc++/119152 * src/c++23/std.cc.in (std::indirect, pmr::indirect) [__cpp_lib_indirect] (std::polymorphic, pmr::polymorphic) [__cpp_lib_polymorphic]: Export. 2025-06-05 Tomasz Kamiński PR libstdc++/120481 * include/bits/chrono_io.h (__format::_S_chars): Reorder so it contains "-{}". (__format::_S_colon, __format::_S_slash, __format::_S_space) (__format::_S_plus_minus): Updated starting indicies. (__format::_S_minus_empty_spec): Define. (__formatter_chrono::_M_C_y_Y, __formatter_chrono::_M_R_T): Rework implementation. (__formatter_chrono::_M_d_e, __formatter_chrono::_M_F) (__formatter_chrono::_M_m, __formatter_chrono::_M_u_w) (__formatter_chrono::_M_H_I, __formatter_chrono::_M_p): Handle multi digits values. (__formatter_chrono::_S_digit): Return string view. (__formatter_chrono::_S_str_d1, __formatter_chrono::_S_str_d2) (__formatter_chrono::_S_fill_two_digits): Define. * testsuite/std/time/format/empty_spec.cc: Update test for year_month_day, that uses '%F'. * testsuite/std/time/format/pr120481.cc: New test. 2025-06-05 Nathan Myers Revert: 2025-06-04 Nathan Myers PR libstdc++/119741 * include/std/sstream: full implementation, really just decls, requires clause and plumbing. * include/bits/version.def, include/bits/version.h: new preprocessor symbol __cpp_lib_sstream_from_string_view. * testsuite/27_io/basic_stringbuf/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_istringstream/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_ostringstream/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_stringstream/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc: New tests. * testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc: New tests. * testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc: New tests. * testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc: New tests. 2025-06-04 Jonathan Wakely * testsuite/std/time/format/empty_spec.cc: Only test time zones for cxx11 string ABI. 2025-06-04 Jonathan Wakely PR libstdc++/99832 * include/bits/chrono.h (system_clock::to_time_t): Add always_inline attribute to be agnostic to the underlying type of time_t. (system_clock::from_time_t): Add always_inline for consistency with to_time_t. * testsuite/20_util/system_clock/99832.cc: New test. 2025-06-04 Nathan Myers PR libstdc++/119741 * include/std/sstream: full implementation, really just decls, requires clause and plumbing. * include/bits/version.def, include/bits/version.h: new preprocessor symbol __cpp_lib_sstream_from_string_view. * testsuite/27_io/basic_stringbuf/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_istringstream/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_ostringstream/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_stringstream/cons/char/string_view.cc: New tests. * testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc: New tests. * testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc: New tests. * testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc: New tests. * testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc: New tests. 2025-06-04 Patrick Palka * include/bits/c++config (_GLIBCXX_AUTO_CAST): Define. * include/bits/iterator_concepts.h (_Decay_copy, __decay_copy): Remove. (__member_begin, __adl_begin): Use _GLIBCXX_AUTO_CAST instead of __decay_copy as per P0849R8. * include/bits/ranges_base.h (_Begin): Likewise. (__member_end, __adl_end, _End): Likewise. (__member_rbegin, __adl_rbegin, _RBegin): Likewise. (__member_rend, __adl_rend, _Rend): Likewise. (__member_size, __adl_size, _Size): Likewise. (_Data): Likewise. 2025-06-04 Tomasz Kamiński * testsuite/std/time/format/empty_spec.cc: New tests. 2025-06-04 Patrick Palka * include/bits/ranges_algo.h (__starts_with_fn, starts_with): Define. (__ends_with_fn, ends_with): Define. * include/bits/version.def (ranges_starts_ends_with): Define. * include/bits/version.h: Regenerate. * include/std/algorithm: Provide __cpp_lib_ranges_starts_ends_with. * src/c++23/std.cc.in (ranges::starts_with): Export. (ranges::ends_with): Export. * testsuite/25_algorithms/ends_with/1.cc: New test. * testsuite/25_algorithms/starts_with/1.cc: New test. 2025-06-04 Jonathan Wakely * include/bits/semaphore_base.h (_S_get_current): Replace with non-static _M_get_current. (_S_do_try_acquire): Replace with non-static _M_do_try_acquire. 2025-06-04 Jonathan Wakely PR libstdc++/104928 * include/bits/semaphore_base.h (_S_do_try_acquire): Take old value by reference. (_M_acquire): Move _S_do_try_acquire call out of the predicate and loop on its result. Make the predicate capture and update the local copy of the value. (_M_try_acquire_until, _M_try_acquire_for): Likewise. (_M_try_acquire): Just call _M_try_acquire_for. * testsuite/30_threads/semaphore/104928-2.cc: New test. * testsuite/30_threads/semaphore/104928.cc: New test. 2025-06-04 Tomasz Kamiński * include/bits/chrono_io.h (__formatter_chrono:_M_s): Add missing __out argument to format_to call. * testsuite/std/time/format/empty_spec.cc: New test. 2025-06-03 Jonathan Wakely * include/std/stop_token: Check __glibcxx_jthread instead of __cplusplus. 2025-06-03 Jonathan Wakely * include/std/type_traits (is_destructible, is_destructible_v): Define using new built-in. (is_nothrow_destructible, is_nothrow_destructible_v): Likewise. (is_trivially_destructible, is_trivially_destructible_v): Likewise. 2025-06-03 Jonathan Wakely * include/bits/atomic_timed_wait.h (__detail::__wait_until): Remove incorrect comment. (__atomic_wait_address_until_v): Do not take address of __args in call to __detail::__wait_until. Fix return statement to refer to member of __wait_result_type. (__atomic_wait_address_for_v): Change parameter type from time_point to duration. * src/c++20/atomic.cc (__spin_until_impl): Fix incorrect return value. Reuse result of first call to clock. 2025-06-03 Jonathan Wakely * include/bits/stl_vector.h (~_Vector_base): Add unreachable hint for negative capacity and cast to size_t explicitly. * include/bits/vector.tcc (vector::_M_realloc_append): Use size() instead of end() - begin(). 2025-06-03 Jonathan Wakely * include/std/bit (__rotl, __rotr): Use static_cast for conversion from int to unsigned. 2025-06-03 Jonathan Wakely * src/c++23/std.cc.in: Remove redundant checks for feature test macros that are always true. 2025-06-02 Jonathan Wakely * include/bits/basic_string.h (basic_string::size): Remove space before parameter list. (basic_string::capacity): Likewise. * include/bits/stl_deque.h (deque::size): Likewise. * include/bits/stl_vector.h (vector::size, vector::capacity): Likewise. * include/bits/vector.tcc (vector::_M_realloc_insert): Likewise. (vector::_M_realloc_append): Likewise. 2025-06-02 Jonathan Wakely PR libstdc++/120386 * include/bits/ranges_algo.h (__unique_copy_fn): Reorder arguments for third case to match the first two cases. * include/bits/stl_algo.h (__unique_copy): Replace three overloads with two, depending only on the iterator category of the input range. Dispatch to __unique_copy_1 for the non-forward case. (__unique_copy_1): New overloads for the case where the input range uses non-forward iterators. (unique_copy): Only pass the input range category to __unique_copy. * testsuite/25_algorithms/unique_copy/lwg2439.cc: New test. 2025-06-02 Tomasz Kamiński * include/bits/funcwrap.h (__polyfunc::__pass_by_rref): Define. (__polyfunc::__param_t): Update to use __pass_by_rref. * include/bits/cpyfunc_impl.h:: Assert that are parameters type are complete. * include/bits/funcref_impl.h: Likewise. * include/bits/mofunc_impl.h: Likewise. * testsuite/20_util/copyable_function/call.cc: New test. * testsuite/20_util/function_ref/call.cc: New test. * testsuite/20_util/move_only_function/call.cc: New test. * testsuite/20_util/copyable_function/conv.cc: New test. * testsuite/20_util/function_ref/conv.cc: New test. * testsuite/20_util/move_only_function/conv.cc: New test. * testsuite/20_util/copyable_function/incomplete_neg.cc: New test. * testsuite/20_util/function_ref/incomplete_neg.cc: New test. * testsuite/20_util/move_only_function/incomplete_neg.cc: New test. 2025-06-02 Jonathan Wakely Tomasz Kamiński PR libstdc++/119152 * include/bits/indirect.h (std::polymorphic, pmr::polymorphic) [__glibcxx_polymorphic]: Define. * include/bits/version.def (polymorphic): Define. * include/bits/version.h: Regenerate. * include/std/memory: Define __cpp_lib_polymorphic. * testsuite/std/memory/polymorphic/copy.cc: New test. * testsuite/std/memory/polymorphic/copy_alloc.cc: New test. * testsuite/std/memory/polymorphic/ctor.cc: New test. * testsuite/std/memory/polymorphic/ctor_poly.cc: New test. * testsuite/std/memory/polymorphic/incomplete.cc: New test. * testsuite/std/memory/polymorphic/invalid_neg.cc: New test. * testsuite/std/memory/polymorphic/move.cc: New test. * testsuite/std/memory/polymorphic/move_alloc.cc: New test. 2025-05-30 Tomasz Kamiński * testsuite/std/time/format/empty_spec.cc: New test. 2025-05-30 Jonathan Wakely * include/bits/atomic_timed_wait.h: Use __wait_result_type. * include/bits/atomic_wait.h (__wait_result_type): New struct. (__wait_args::_M_prep_for_wait_on): Rename to _M_setup_wait, use __wait_result_type. (__atomic_wait_address): Adjust to call _M_setup_wait. * src/c++20/atomic.cc (__spin_impl): Use __wait_result_type. (__wait_impl): Likewise. (__spin_until_impl): Likewise. (__wait_until_impl): Likewise. 2025-05-30 Jonathan Wakely PR libstdc++/118494 PR libstdc++/110854 PR libstdc++/98749 * acinclude.m4 (GLIBCXX_CHECK_GTHREADS): Remove checks for sem_timedwait. Do not define _GLIBCXX_HAVE_POSIX_SEMAPHORE. * config.h.in: Regenerate. * configure: Regenerate. * include/bits/semaphore_base.h (__platform_semaphore): Remove. (__atomic_semaphore): Replace with __semaphore_base and make type of _M_count depend on template parameter. Fix _S_max constant to use correct type. (__semaphore_base::_M_try_acquire): Qualify to avoid ADL. (__semaphore_base::_M_release): Return old value. Remove FIXME comment. (__semaphore_impl): Replace typedef with alias template. * include/bits/version.def (semaphore): Do not depend on _GLIBCXX_HAVE_POSIX_SEMAPHORE. * include/bits/version.h: Regenerate. * include/std/semaphore (semaphore): Adjust type of _M_sem member. Add constexpr to constructor. Add assertions to (semaphore::semaphore(ptrdiff_t)): Add constexpr. Add assertion for precondition. (semaphore::release): Add assertion using value returned from _M_release. * testsuite/30_threads/semaphore/100806.cc: Increase template argument for std::counting_semaphore, so constructor precondition is met. * testsuite/30_threads/semaphore/cons.cc: New test. * testsuite/30_threads/semaphore/try_acquire_posix.cc: Remove. * testsuite/30_threads/semaphore/platform_try_acquire_for.cc: Removed. 2025-05-30 Jonathan Wakely * include/std/barrier (__tree_barrier_base): New class. (__tree_barrier): Move non-dependent code into __tree_barrier_base and derive from it. 2025-05-30 Jonathan Wakely PR libstdc++/118395 PR libstdc++/108974 PR libstdc++/98749 * include/std/barrier (__tree_barrier): Use default member-initializers. Change _M_state member from unique_ptr<__state_t[]> to atomic<__state_t*>. Add no_unique_address attribute to _M_completion. (__tree_barrier::_M_arrive): Load value from _M_state. (__tree_barrier::_M_invoke_completion): New member function to ensure a throwing completion function will terminate, as proposed in LWG 3898. (__tree_barrier::max): Reduce by one to avoid overflow. (__tree_barrier::__tree_barrier): Add constexpr. Qualify call to std::move. Remove mem-initializers made unnecessary by default member-initializers. Add precondition check. Only allocate state array if not constant evaluated. (__tree_barrier::arrive): Add precondition check. Do deferred initialization of _M_state if needed. (barrier): Add static_assert, as proposed in LWG 3898. (barrier::barrier): Add constexpr. * testsuite/30_threads/barrier/cons.cc: New test. * testsuite/30_threads/barrier/lwg3898.cc: New test. 2025-05-30 Jonathan Wakely * include/std/latch (latch::arrive_and_wait): Optimise. 2025-05-30 Jonathan Wakely * config/abi/pre/gnu.ver: Add new symbol version and exports. * include/bits/atomic_timed_wait.h (__platform_wait_until): Move to atomic.cc. (__cond_wait_until, __spin_until_impl): Likewise. (__wait_until_impl): Likewise. Change __wait_args_base parameter to non-const reference and change third parameter to __wait_clock_t::duration. (__wait_until): Change __wait_args_base parameter to non-const reference. Change Call time_since_epoch() to get duration from time_point. (__wait_for): Change __wait_args_base parameter to non-const reference. (__atomic_wait_address_until): Call _M_prep_for_wait_on on args. (__atomic_wait_address_for): Likewise. (__atomic_wait_address_until_v): Qualify call to avoid ADL. Do not forward __vfn. * include/bits/atomic_wait.h (__platform_wait_uses_type): Use alignof(T) not alignof(T*). (__futex_wait_flags, __platform_wait, __platform_notify) (__waitable_state, __spin_impl, __notify_impl): Move to atomic.cc. (__wait_impl): Likewise. Change __wait_args_base parameter to non-const reference. (__wait_args_base::_M_wait_state): New data member. (__wait_args_base::_M_prep_for_wait_on): New member function. (__wait_args_base::_M_load_proxy_wait_val): New member function. (__wait_args_base::_S_memory_order_for): Remove member function. (__atomic_wait_address): Call _M_prep_for_wait_on on args. (__atomic_wait_address_v): Qualify call to avoid ADL. * src/c++20/Makefile.am: Add new file. * src/c++20/Makefile.in: Regenerate. * src/c++20/atomic.cc: New file. * testsuite/17_intro/headers/c++1998/49745.cc: Remove XFAIL for C++20 and later. * testsuite/29_atomics/atomic/wait_notify/100334.cc: Remove use of internal implementation details. * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.35 version. 2025-05-30 Jonathan Wakely * include/bits/atomic_timed_wait.h (__wait_until_impl): Adjust to use new naming. * include/bits/atomic_wait.h (__waiter_pool_impl): Rename to __waitable_state. (__waiter_pool_impl::_S_wait): Rename to _M_waiters. (__waiter_pool_impl::_S_impl_for): Rename to _S_state_for. (__waiter_pool_impl::_S_track): Adjust to use new naming. (__wait_impl, __notify_impl): Likewise. * testsuite/29_atomics/atomic/wait_notify/100334.cc: Adjust to use new naming. 2025-05-30 Jonathan Wakely * include/bits/atomic_timed_wait.h (__atomic_wait_address_until_v): Replace __atomic_compare with __atomic_eq. (__atomic_wait_address_for_v): Likewise. * include/bits/atomic_wait.h (__atomic_compare): Rename to __atomic_eq. (__atomic_wait_address_v): Replace __atomic_compare with __atomic_eq. 2025-05-30 Jonathan Wakely * include/bits/atomic_timed_wait.h (__wait_until_impl): Change first parameter to const void* and then static_cast to const __platform_wait_t* when not using proxied wait. (__wait_until): Change first parameter to const void*. (__wait_for): Likewise. (__atomic_wait_address_until): Remove reinterpret_cast and allow address to implicitly convert to const void* instead. (__atomic_wait_address_for): Likewise. * include/bits/atomic_wait.h: (__wait_impl, __notify_impl): Change first parameter to const void* and then static_cast to const __platform_wait_t* when not using proxied wait. (__atomic_wait_address, __atomic_notify_address) Remove reinterpret_cast and allow address to implicitly convert to const void* instead. 2025-05-30 Jonathan Wakely * include/bits/atomic_wait.h (__platform_wait): Change function template to a normal function. The parameter is always __platform_wait_t* which is just int* for this implementation of the function. (__platform_notify): Likewise. 2025-05-30 Jonathan Wakely * include/bits/atomic_timed_wait.h (__to_wait_clock): Do not use chrono::ceil if clock and duration are already correct type. (__wait_until): Always call __to_wait_clock. 2025-05-30 Jonathan Wakely * include/bits/atomic_wait.h (__notify_impl): Increment the proxy value before returning early for the uncontended case. 2025-05-30 Jonathan Wakely * include/bits/atomic_timed_wait.h (__cond_wait_impl): Add missing inline keyword. (__spin_until_impl): Change parameter from pointer to reference. Replace make_pair with list-initialization. Initialize variable for return value. (__wait_until_impl): Likewise. Remove some preprocessor conditional logic. Use _S_track for contention tracking. Avoid unnecessary const_cast. (__wait_until): Change parameter from pointer to reference. Replace make_pair with list-initialization. (__wait_for): Change parameter from pointer to reference. Add __do_spin flag to args. * include/bits/atomic_wait.h (__waiter_pool_impl::_S_track): New function returning an RAII object for contention tracking. (__wait_flags): Do not set the __do_spin flag in the __spin_only enumerator. Comment out the unused __abi_version_mask enumerator. Define operator| and operator|= overloads. (__wait_args_base::operator&): Define. (__wait_args::operator&, __wait_args::_S_default_flags): Remove. (__wait_args::operator|, __wait_args::operator|=): Remove. (__spin_impl): Change parameter from pointer to reference. Replace make_pair call with list-initialization. (__wait_impl): Likewise. Remove some preprocessor conditional logic. Always store old value in __args._M_old. Avoid unnecessary const_cast. Use _S_track. (__notify_impl): Change parameter to reference. Remove some preprocessor conditional logic. (__atomic_wait_address): Add comment. Update __args._M_old on each iteration. (__atomic_wait_address_v): Add comment. * include/std/latch (latch::wait): Adjust predicates for new logic. * testsuite/29_atomics/atomic_integral/wait_notify.cc: Improve test. 2025-05-30 Jonathan Wakely * include/bits/atomic_timed_wait.h: Whitespace fixes. * include/bits/atomic_wait.h: Likewise. 2025-05-30 Thomas Rodgers * include/bits/atomic_timed_wait.h (__spin_until_impl): Accept __wait_args as const __wait_args_base*. (__wait_until_impl): Likewise. (__wait_until): Likewise. (__wait_for): Likewise. (__atomic_wait_address_until): Pass __wait_args by address. (__atomic_wait_address_for): Likewise. * include/bits/atomic_wait.h (__wait_args_base): New struct. (__wait_args): Derive from __wait_args_base. (__wait_args::__wait_args()): Adjust ctors to call call base ctor. (__wait_args::__wait_args(const __wait_args_base&)): New ctor. (__wait_args::operator|=): New method. (__wait_args::_S_flags_for): Change return type to __wait_flags. (__spin_impl): Accept __wait_args as const __wait_args_base*. (__wait_impl): Likewise. (__notify_impl): Likewise. (__atomic_wait_address): Pass __wait_args by address. (__atomic_wait_address_v): Likewise. (__atomic_notify_address): Likewise. 2025-05-30 Thomas Rodgers * include/bits/atomic_timed_wait.h: (__detail::__platform_wait_until_impl): Rename to __platform_wait_until. (__detail::__platform_wait_until): Remove previous definition. (__detail::__cond_wait_until_impl): Rename to __cond_wait_until. (__detail::__cond_wait_until): Remove previous definition. (__detail::__spin_until_impl): New function. (__detail::__wait_until_impl): New function. (__detail::__wait_until): New function. (__detail::__wait_for): New function. (__detail::__timed_waiter_pool): Remove type. (__detail::__timed_backoff_spin_policy): Remove type. (__detail::__timed_waiter): Remove type. (__detail::__enters_timed_wait): Remove type alias. (__detail::__bare_timed_wait): Remove type alias. (__atomic_wait_address_until): Adjust to new implementation detail. (__atomic_wait_address_until_v): Likewise. (__atomic_wait_address_bare): Remove. (__atomic_wait_address_for): Adjust to new implementation detail. (__atomic_wait_address_for_v): Likewise. (__atomic_wait_address_for_bare): Remove. * include/bits/atomic_wait.h: Include bits/stl_pair.h. (__detail::__default_spin_policy): Remove type. (__detail::__atomic_spin): Remove function. (__detail::__waiter_pool_base): Rename to __waiter_pool_impl. Remove _M_notify. Rename _S_for to _S_impl_for. (__detail::__waiter_base): Remove type. (__detail::__waiter_pool): Remove type. (__detail::__waiter): Remove type. (__detail::__enters_wait): Remove type alias. (__detail::__bare_wait): Remove type alias. (__detail::__wait_flags): New enum. (__detail::__wait_args): New struct. (__detail::__wait_result_type): New type alias. (__detail::__spin_impl): New function. (__detail::__wait_impl): New function. (__atomic_wait_address): Adjust to new implementation detail. (__atomic_wait_address_v): Likewise. (__atomic_notify_address): Likewise. (__atomic_wait_address_bare): Delete. (__atomic_notify_address_bare): Likewise. * include/bits/semaphore_base.h: Adjust implementation to use new __atomic_wait_address_v contract. * include/std/barrier: Adjust implementation to use new __atomic_wait contract. * include/std/latch: Adjust implementation to use new __atomic_wait contract. * testsuite/29_atomics/atomic/wait_notify/100334.cc (main): Adjust to for __detail::__waiter_pool_base renaming. 2025-05-29 Patrick Palka * include/std/flat_map (_Flat_map_impl::operator==): Compare keys and values separately. 2025-05-29 Patrick Palka Jonathan Wakely PR libstdc++/120465 * include/std/flat_map (_Flat_map_impl::_M_erase_if): Use a projection with ranges::remove_if to pass a pair instead of a tuple to the predicate. * testsuite/23_containers/flat_map/1.cc (test07): Strengthen to expect the argument passed to the predicate is a pair. * testsuite/23_containers/flat_multimap/1.cc (test07): Likewise. 2025-05-29 Jonathan Wakely * testsuite/17_intro/names.cc [_AIX] (a): Undefine. * testsuite/experimental/names.cc [_AIX] (ptr): Undefine. 2025-05-29 Jonathan Wakely * testsuite/22_locale/num_put/put/char/lwg4084.cc [_AIX]: Adjust expected output for NaN and infinity. 2025-05-29 Jonathan Wakely * testsuite/23_containers/deque/capacity/shrink_to_fit.cc: Remove dg-xfail-run-if for AIX. * testsuite/23_containers/unordered_map/96088.cc: Replace dg-xfail-run-if with dg-require-effective-target c++20. * testsuite/23_containers/unordered_multimap/96088.cc: Likewise. * testsuite/23_containers/unordered_multiset/96088.cc: Likewise. * testsuite/23_containers/unordered_set/96088.cc: Likewise. 2025-05-29 Jonathan Wakely * include/bits/boost_concept_check.h: Disable -Wlong-long warnings. * testsuite/24_iterators/operations/prev_neg.cc: Adjust dg-error line number. 2025-05-29 Jonathan Wakely * doc/xml/manual/test.xml: Remove outdated documentation on testing with -std options in --target_board. * doc/html/manual/test.html: Regenerate. 2025-05-27 Jonathan Wakely * testsuite/17_intro/names.cc [_AIX] (n): Undefine. * testsuite/experimental/names.cc [_AIX] (ptr): Undefine. 2025-05-27 Jonathan Wakely * testsuite/std/format/debug.cc: Disable for targets with 16-bit wchar_t. * testsuite/std/format/functions/format.cc: Use -DUNICODE for targets with 32-bit wchar_t. (test_unicode) [UNICODE]: Only run checks when UNICODE is defined. 2025-05-27 Jonathan Wakely * include/Makefile.in: Regenerate. 2025-05-27 Jonathan Wakely PR libstdc++/96710 * include/bits/std_abs.h [__SIZEOF_INT128__] (abs(__int128)): Define. [_GLIBCXX_USE_FLOAT128] (abs(__float128)): Enable definition for strict modes. * testsuite/26_numerics/headers/cmath/82644.cc: Use strict_std instead of defining __STRICT_ANSI__. * testsuite/26_numerics/headers/cstdlib/abs128.cc: New test. 2025-05-27 Luc Grosheintz * include/std/mdspan: Value initialize the array storing the dynamic extents. * testsuite/23_containers/mdspan/extents/ctor_default.cc: New test. 2025-05-26 Tomasz Kamiński PR libstdc++/119152 * testsuite/std/memory/indirect/ctor.cc: Run test_inplace_ctor. 2025-05-26 Jonathan Wakely Tomasz Kamiński PR libstdc++/119152 * doc/doxygen/stdheader.cc: Added indirect.h file. * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/bits/indirect.h: New file. * include/bits/version.def (indirect): Define. * include/bits/version.h: Regenerate. * include/std/memory: Include new header. * testsuite/std/memory/indirect/copy.cc * testsuite/std/memory/indirect/copy_alloc.cc * testsuite/std/memory/indirect/ctor.cc * testsuite/std/memory/indirect/incomplete.cc * testsuite/std/memory/indirect/invalid_neg.cc * testsuite/std/memory/indirect/move.cc * testsuite/std/memory/indirect/move_alloc.cc * testsuite/std/memory/indirect/relops.cc 2025-05-26 Tomasz Kamiński PR libstdc++/119126 * doc/doxygen/stdheader.cc: Added funcref_impl.h file. * include/Makefile.am: Added funcref_impl.h file. * include/Makefile.in: Added funcref_impl.h file. * include/bits/funcref_impl.h: New file. * include/bits/funcwrap.h: (_Ptrs::_M_obj): Const-qualify. (_Storage::_M_ptr, _Storage::_M_ref): Remove. (__polyfunc::__cast_to) Define. (_Base_invoker::_S_ptrs, _Base_invoker::_S_nttp) (_Base_invoker::_S_bind_ptrs, _Base_invoker::_S_bind_ref) (_Base_invoker::_S_call_ptrs): Define. (_Base_invoker::_S_call_storage): Foward to _S_call_ptrs. (_Manager::_S_local, _Manager::_S_ptr): Adjust for _M_obj being const qualified. (__polyfunc::_Manager, __polyfunc::_Mo_base): Guard with __glibcxx_move_only_function || __glibcxx_copyable_function. (__polyfunc::__skip_first_arg, __polyfunc::__deduce_funcref) (std::function_ref) [__glibcxx_function_ref]: Define. * include/bits/utility.h (std::nontype_t, std::nontype) (__is_nontype_v) [__glibcxx_function_ref]: Define. * include/bits/version.def: Define function_ref. * include/bits/version.h: Regenerate. * include/std/functional: Define __cpp_lib_function_ref. * src/c++23/std.cc.in (std::nontype_t, std::nontype) (std::function_ref) [__cpp_lib_function_ref]: Export. * testsuite/20_util/function_ref/assign.cc: New test. * testsuite/20_util/function_ref/call.cc: New test. * testsuite/20_util/function_ref/cons.cc: New test. * testsuite/20_util/function_ref/cons_neg.cc: New test. * testsuite/20_util/function_ref/conv.cc: New test. * testsuite/20_util/function_ref/deduction.cc: New test. * testsuite/20_util/function_ref/mutation.cc: New test. 2025-05-23 Jonathan Wakely PR libstdc++/120384 * include/bits/stl_algo.h (__unique_copy): Remove all _BinaryPredicateConcept concept checks. (unique_copy): Check _BinaryPredicateConcept in overload that takes a predicate. * testsuite/25_algorithms/unique_copy/120384.cc: New test. 2025-05-23 Jonathan Wakely * include/std/type_traits (is_constant_evaluated): Add always_inline attribute. 2025-05-23 Jonathan Wakely * testsuite/17_intro/names.cc [__sun__] (a, i, n): Undefine. 2025-05-23 Stefan Schulze Frielinghaus * testsuite/std/format/parse_ctx.cc: Fix typo for bfloat16 guard. 2025-05-22 Jonathan Wakely Tomasz Kamiński * include/bits/allocated_ptr.h (_Scoped_allocation): New class template. 2025-05-22 Jonathan Wakely * testsuite/util/pstl/test_utils.h (ForwardIterator::operator++): Fix return type. (BidirectionalIterator::operator++): Likewise. (BidirectionalIterator::operator--): Likewise. 2025-05-22 Jonathan Wakely PR libstdc++/120367 * include/bits/stl_vector.h (_M_range_initialize): Initialize _M_impl._M_finish. * testsuite/23_containers/vector/cons/from_range.cc: Check with a type that throws on construction. exceptions during construction. 2025-05-21 Alexandre Oliva * testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc: Guard non-wide stold calls with conditions for it to be defined. * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc: Likewise. 2025-05-21 Xℹ Ruoyao PR libstdc++/81806 * include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp (split_finish): Use maintained size, instead of calling std::distance. 2025-05-21 Xℹ Ruoyao * include/ext/pb_ds/detail/rb_tree_map_/node.hpp (rb_tree_node_::size_type): New typedef. (rb_tree_node_::m_subtree_size): New field. * include/ext/pb_ds/detail/splay_tree_/node.hpp (splay_tree_node_::size_type): New typedef. (splay_tree_node_::m_subtree_size): New field. * include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp (PB_DS_BIN_TREE_NAME::update_subtree_size): Declare new member function. * include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp (update_subtree_size): Define. (apply_update, update_to_top): Call update_subtree_size. 2025-05-21 Xℹ Ruoyao * include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp (insert_leaf_new, insert_imp_empty): remove redundant statements. 2025-05-20 Tomasz Kamiński * include/bits/chrono_io.h (_ChronoSpec::_M_locale_specific): Declare as bit fiekd in tail-padding.. * include/bits/formatfwd.h (__format::_Align): Defined as enum class and add using enum. * include/std/format (__format::_Pres_type, __format::_Sign) (__format::_WidthPrec, __format::_Arg_t): Defined as enum class and add using enum. (_Pres_type::_Pres_esc): Replace with _Pres_max. (_Pres_type::_Pres_seq, _Pres_type::_Pres_str): Remove. (__format::_Pres_type): Updated values of enumerators as described above. (__format::_Spec): Rearranged members to have 8 bits of tail-padding. (_Spec::_M_debug): Defined. (_Spec::_M_reserved): Extended to 8 bits and moved at the end. (_Spec::_M_reserved2): Removed. (_Spec::_M_parse_fill_and_align, _Spec::_M_parse_sign) (__format::__write_padded_as_spec): Adjusted default value checks. (__format::_Term_char): Add using enum and adjust enumertors. (__Escapes::_S_term): Adjusted for _Term_char values. (__format::__should_escape_ascii): Adjusted _Term_char uses. (__format::__write_escaped): Adjusted for _Term_char. (__formatter_str::parse): Set _Pres_s if specifed and _M_debug instead of _Pres_esc. (__formatter_str::set_debug_format): Set _M_debug instead of _Pres_esc. (__formatter_str::format, __formatter_str::_M_format_range): Check _M_debug instead of _Prec_esc. (__formatter_str::_M_format_escaped): Adjusted _Term_char uses. (__formatter_int::__formatter_int(_Spec<_CharT>)): Set _Pres_d if default presentation type is not set. (__formatter_int::_M_parse): Adjusted default value checks. (__formatter_int::_M_do_parse): Set _M_debug instead of _Pres_esc. (__formatter_int::_M_format_character): Handle escaped presentation. (__formatter_int::_M_format_character_escaped) (__formatter_int::_S_character_width): Merged into _M_format_character. (__formatter_ptr::__formatter_ptr(_Spec<_CharT>)): Set _Pres_p if default presentation type is not set. (__formatter_ptr::parse): Add default __type parameter, store _Pres_p, and handle _M_alt to be consistent with meaning for integers. (__foramtter_ptr<_CharT>::_M_set_default): Define. (__format::__pack_arg_types, std::basic_format_args): Add necessary casts. (formatter<_CharT, _CharT>::set_debug_format) (formatter::set_debug_format): Set _M_debug instead of _Pres_esc. (formatter<_CharT, _CharT>::format, formatter::format): Simplify calls to _M_format_character. (range_formatter<_Rg, _CharT>::parse): Replace _Pres_str with _Pres_s and set _M_debug instead of _Pres_esc. (range_formatter<_Rg, _CharT>::format): Replace _Pres_str with _Pres_s. 2025-05-20 Jonathan Wakely * doc/xml/faq.xml: Update URL for archived SGI STL docs. * doc/xml/manual/containers.xml: Likewise. * doc/xml/manual/extensions.xml: Likewise. * doc/xml/manual/using.xml: Likewise. * doc/xml/manual/utilities.xml: Likewise. * doc/html/*: Regenerate. 2025-05-19 Jonathan Wakely * include/std/ranges (_ZipTransform::operator()): Remove name of unused parameter. (chunk_view::_Iterator, stride_view::_Iterator): Likewise. (join_with_view): Declare _Iterator and _Sentinel as class instead of struct. (repeat_view): Declare _Iterator as class instead of struct. 2025-05-19 Jonathan Wakely PR libstdc++/120293 * include/bits/chrono_io.h (_M_format_to_ostream): Add special case for local_time convertible to local_days. * testsuite/std/time/clock/local/io.cc: Check formatting of chrono::local_days. 2025-05-16 Patrick Palka * include/std/type_traits (__is_invocable): Define in terms of corresponding builtin if available. (__is_nothrow_invocable): Likewise. (is_invocable_v): Likewise. (is_nothrow_invocable_v): Likewise. 2025-05-16 Jonathan Wakely PR libstdc++/65909 * testsuite/lib/libstdc++.exp (check_v3_target_namedlocale): Change name of formal argument to locale. 2025-05-15 Luc Grosheintz * include/std/mdspan: Implement the mandate for extents as signed or unsigned integer and not any interal type. Remove leading underscores from names in static_assert message. * testsuite/23_containers/mdspan/extents/class_mandates_neg.cc: Check that extents and extents are invalid. Adjust dg-prune-output pattern. * testsuite/23_containers/mdspan/extents/misc.cc: Update tests to avoid `char` and `bool` as IndexType. 2025-05-15 Jonathan Wakely PR libstdc++/120190 * include/std/format (format_kind): Adjust primary template to not depend on itself. * testsuite/std/format/ranges/format_kind_neg.cc: Adjust expected errors. Check more invalid specializations. 2025-05-15 Jonathan Wakely * include/std/complex (arg(T)): Use __builtin_signbit instead of std::signbit. 2025-05-15 Jonathan Wakely PR libstdc++/120235 * doc/html/*: Regenerate. * doc/xml/manual/evolution.xml: Document deprecation. * include/std/complex: Replace references to TR1 subclauses with corresponding C++11 subclauses. (fabs): Add deprecated attribute. * testsuite/26_numerics/complex/fabs_neg.cc: New test. 2025-05-15 Jason Merrill * testsuite/lib/libstdc++.exp: Add -Wabi. 2025-05-15 Tomasz Kamiński PR libstdc++/119246 * include/std/format: Updated check for _GLIBCXX_FORMAT_F128. 2025-05-14 Tomasz Kamiński PR libstdc++/119125 * include/bits/move_only_function.h: Move to... * include/bits/funcwrap.h: ...here. * doc/doxygen/stdheader.cc (init_map): Replaced move_only_function.h with funcwrap.h, and changed include guard to use feature test macro. Move bits/version.h include before others. * include/Makefile.am: Likewise. * include/Makefile.in: Likewise. * include/std/functional: Likewise. 2025-05-14 Tomasz Kamiński PR libstdc++/119125 * doc/doxygen/stdheader.cc: Addded cpyfunc_impl.h header. * include/Makefile.am: Add bits cpyfunc_impl.h. * include/Makefile.in: Add bits cpyfunc_impl.h. * include/bits/cpyfunc_impl.h: New file. * include/bits/mofunc_impl.h: Mention LWG 4255. * include/bits/move_only_function.h: Update header description and change guard to also check __glibcxx_copyable_function. (_Manager::_Func): Remove noexcept. (std::__is_polymorphic_function_v>) (__variant::_Never_valueless_alt>) (move_only_function) [__glibcxx_move_only_function]: Adjust guard. (std::__is_polymorphic_function_v>) (__variant::_Never_valueless_alt>) (__polyfunc::_Cpy_base, std::copyable_function) [__glibcxx_copyable_function]: Define. * include/bits/version.def: Define copyable_function. * include/bits/version.h: Regenerate. * include/std/functional: Define __cpp_lib_copyable_function. * src/c++23/std.cc.in (copyable_function) [__cpp_lib_copyable_function]: Export. * testsuite/20_util/copyable_function/call.cc: New test based on move_only_function tests. * testsuite/20_util/copyable_function/cons.cc: New test based on move_only_function tests. * testsuite/20_util/copyable_function/conv.cc: New test based on move_only_function tests. * testsuite/20_util/copyable_function/copy.cc: New test. * testsuite/20_util/copyable_function/move.cc: New test based on move_only_function tests. 2025-05-14 Tomasz Kamiński PR libstdc++/119125 * include/bits/mofunc_impl.h: (std::move_only_function): Adjusted for changes in bits/move_only_function.h (move_only_function::move_only_function(_Fn&&)): Special case move_only_functions with same invoker. (move_only_function::operator=(move_only_function&&)): Handle self assigment. * include/bits/move_only_function.h (__polyfunc::_Ptrs) (__polyfunc::_Storage): Refactored from _Mo_func::_Storage. (__polyfunc::__param_t): Moved from move_only_function::__param_t. (__polyfunc::_Base_invoker, __polyfunc::_Invoke): Refactored from move_only_function::_S_invoke. (__polyfunc::_Manager): Refactored from _Mo_func::_S_manager. (std::_Mofunc_base): Moved into __polyfunc::_Mo_base with parts extracted to __polyfunc::_Storage and __polyfunc::_Manager. (__polyfunc::__deref_as, __polyfunc::__invoker_of) (__polyfunc::__base_of, __polyfunc::__is_invoker_convertible): Define. (std::__is_move_only_function_v): Renamed to __is_polymorphic_function_v. (std::__is_polymorphic_function_v): Renamed from __is_move_only_function_v. * testsuite/20_util/move_only_function/call.cc: Test for functions pointers. * testsuite/20_util/move_only_function/conv.cc: New test. * testsuite/20_util/move_only_function/move.cc: Tests for self assigment. 2025-05-14 Tomasz Kamiński PR libstdc++/119246 * include/std/format (__format::__bflt16_t): Define. (_GLIBCXX_FORMAT_F128): Separate value for cases where _Float128 is used. (__format::__float128_t): Renamed to __format::__flt128_t. (std::formatter<_Float128, _CharT>): Define always if there is formattable 128bit float. (std::formatter<__float128, _CharT>): Define. (_Arg_type::_Arg_f128): Rename to _Arg_float128 and adjust value. (_Arg_type::_Arg_ibm128): Change value to _Arg_ldbl. (_Arg_type::_Arg_ieee128): Define as alias to _Arg_float128. (_Arg_value::_M_f128): Replaced with _M_ieee128 and _M_float128. (_Arg_value::_M_ieee128, _Arg_value::_M_float128) (_Arg_value::_M_bf16, _Arg_value::_M_f16, _Arg_value::_M_f32) (_Arg_value::_M_f64): Define. (_Arg_value::_S_get, basic_format_arg::_S_to_enum): Handle __bflt16, _Float16, _Float32, _Float64, and __float128 types. (basic_format_arg::_S_to_arg_type): Preserve _bflt16, _Float16, _Float32, _Float64 and __float128 types. (basic_format_arg::_M_visit): Handle _Arg_float128, _Arg_ieee128, _Arg_b16, _Arg_f16, _Arg_f32, _Arg_f64. * testsuite/std/format/arguments/args.cc: Updated to illustrate that extended floating point types use handles now. Added test for __float128. * testsuite/std/format/parse_ctx.cc: Extended test to cover class to check_dynamic_spec with floating point types and handles. 2025-05-14 Ville Voutilainen * include/std/utility (to_underlying): Add the __always_inline__ attribute. 2025-05-12 Thomas Schwinge PR target/119645 * configure.host [GCN, nvptx] (atomicity_dir): Don't set. 2025-05-12 Patrick Palka PR libstdc++/119714 PR libstdc++/112490 * include/std/expected (expected::operator==): Replace non-dependent std::expected function parameter with a dependent one of type expected<_Vp, _Er> where _Vp matches _Tp. * testsuite/20_util/expected/119714.cc: New test. 2025-05-12 Jonathan Wakely PR libstdc++/120187 * include/c_global/ciso646: Only give deprecated warning for C++20 and later. * include/c_global/ccomplex: Add @since to Doxygen comment. * include/c_global/cstdalign: Likewise. * include/c_global/cstdbool: Likewise. * include/c_global/ctgmath: Likewise. * testsuite/18_support/headers/ciso646/macros.cc: Remove dg-warning for c++17_only effective target. * testsuite/18_support/headers/ciso646/macros-2.cc: New test. 2025-05-12 Jonathan Wakely * doc/xml/manual/status_cxx2023.xml: Update status of proposals implemented after GCC 14.2 release. * doc/html/manual/status.html: Regenerate. 2025-05-12 Jonathan Wakely PR libstdc++/120198 * include/bits/version.def (scoped_lock): Do not depend on gthreads or hosted. * include/bits/version.h: Regenerate. * include/std/mutex (scoped_lock): Update comment. * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Remove dg-require-gthreads and use custom lockable type instead of std::mutex. Check that typedef is only present for a single template argument. 2025-05-12 Thomas Schwinge PR libstdc++/70560 PR libstdc++/119667 * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Use '__SIZE_TYPE__' instead of 'size_t'. * configure: Regenerate. 2025-05-12 Jonathan Wakely PR libstdc++/118260 * python/hook.in: Suppress output from gdb.execute calls to register skips. 2025-05-12 Jonathan Wakely * doc/xml/manual/status_cxx2017.xml: Update status for std::to_chars and std::from_chars. * doc/html/manual/*: Regenerate. 2025-05-12 Jonathan Wakely PR libstdc++/65909 * testsuite/lib/libstdc++.exp (check_v3_target_namedlocale): Hardcode the locale name instead of passing it to the executable. Do not hardcode buffer size for string. 2025-05-10 Alexandre Oliva * src/c++23/print.cc [__VXWORKS__]: Include ioLib.h. 2025-05-09 Tomasz Kamiński * include/bits/chrono_io.h (__formatter_chrono::_M_format_to): Extracted from _M_format. (__formatter_chrono::_M_format): Use _Padding_sink and delegate to _M_format_to. 2025-05-09 Tomasz Kamiński * include/std/format (__Sink_iter<_CharT>::_M_discarding) (__Sink<_CharT>::_M_discarding, _Iter_sink<_CharT, _OutIter>::_M_discarding) (_Padding_sinl<_CharT, _Out>::_M_padwidth) (_Padding_sink<_CharT, _Out>::_M_maxwidth): Remove const. (_Padding_sink<_CharT, _Out>::_M_sync_discarding) (_Padding_sink<_CharT, _Out>::_M_discarding): Define. (_Padding_sink<_CharT, _Out>::_Padding_sink(_Out, size_t, size_t)) (_Padding_sink<_CharT, _Out>::_M_force_update): (_Padding_sink<_CharT, _Out>::_M_flush): Call _M_sync_discarding. (_Padding_sink<_CharT, _Out>::_Padding_sink(_Out, size_t)): Delegate. 2025-05-07 Jonathan Wakely PR libstdc++/120159 * src/c++23/std.cc.in (is_layout_compatible_v): Export. 2025-05-07 Jonathan Wakely * src/c++23/std.cc.in: Fix export for std::extents. 2025-05-07 Luc Grosheintz * testsuite/23_containers/mdspan/extents/class_mandates_neg.cc: New test. * testsuite/23_containers/mdspan/extents/ctor_copy.cc: New test. * testsuite/23_containers/mdspan/extents/ctor_ints.cc: New test. * testsuite/23_containers/mdspan/extents/ctor_shape.cc: New test. * testsuite/23_containers/mdspan/extents/custom_integer.cc: New test. * testsuite/23_containers/mdspan/extents/misc.cc: New test. 2025-05-07 Luc Grosheintz PR libstdc++/107761 * include/std/mdspan (extents): New class. * src/c++23/std.cc.in: Add 'using std::extents'. 2025-05-07 Luc Grosheintz * doc/doxygen/user.cfg.in: Add . * include/Makefile.am: Ditto. * include/Makefile.in: Ditto. * include/precompiled/stdc++.h: Ditto. * include/std/mdspan: New file. 2025-05-07 Luc Grosheintz * include/bits/version.def: Add internal feature testing macro __glibcxx_mdspan. * include/bits/version.h: Regenerate. 2025-05-07 Tomasz Kamiński PR libstdc++/120114 * include/bits/chrono_io.h (__formatter_chrono::_M_format): Use __field_width. * testsuite/std/time/format/pr120114.cc: New test. 2025-05-07 Jonathan Wakely PR libstdc++/120147 * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Restore use of AC_LANG_CPLUSPLUS. * configure: Regenerate. 2025-05-06 Jonathan Wakely PR libstdc++/70560 PR libstdc++/119667 * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Only check for __atomic_fetch_add on _Atomic_word. Define new macro _GLIBCXX_ATOMIC_WORD_BUILTINS and stop defining macro _GLIBCXX_ATOMIC_BUILTINS. (GLIBCXX_ENABLE_BACKTRACE): Check for __atomic_load_n and __atomic_store_n on int, void* and size_t. * config.h.in: Regenerate. * configure: Regenerate. * configure.host: Fix typo in comment. * include/ext/atomicity.h (__exchange_and_add, __atomic_add): Depend on _GLIBCXX_ATOMIC_WORD_BUILTINS macro instead of old _GLIBCXX_ATOMIC_BUILTINS macro. 2025-05-06 Jonathan Wakely PR libstdc++/117905 * include/pstl/glue_numeric_impl.h (reduce, transform_reduce) (transform_reduce, inclusive_scan, transform_exclusive_scan) (transform_inclusive_scan): Use std::move for __init parameter. * include/pstl/numeric_impl.h (__brick_transform_reduce) (__pattern_transform_reduce, __brick_transform_scan) (__pattern_transform_scan): Likewise. * include/std/numeric (inclusive_scan, transform_exclusive_scan): Use std::move to create local copy of the first element. * testsuite/26_numerics/pstl/numeric_ops/108236.cc: Move test using move-only type to ... * testsuite/26_numerics/pstl/numeric_ops/move_only.cc: New test. 2025-05-06 Jonathan Wakely PR libstdc++/120029 * src/c++17/fs_path.cc (path::operator+=(const path&)): Handle parameters that alias the path or one of its components. * testsuite/27_io/filesystem/path/concat/120029.cc: New test. * testsuite/experimental/filesystem/path/concat/120029.cc: New test. 2025-05-06 Jonathan Wakely PR c++/120112 * include/bits/ptr_traits.h (_Safe_iterator_base): Use class keyword in class-head of declaration. * include/debug/debug.h (_Safe_iterator): Likewise. 2025-05-06 Jonathan Wakely * include/bits/stl_iterator.h (counted_iterator): Add noexcept to friend operators which only access the _M_length member. 2025-05-02 Dhruv Chawla * include/std/memory: Define __glibcxx_want_addressof_constexpr. * testsuite/20_util/headers/memory/version.cc: Test for macro value. 2025-05-02 Jonathan Wakely * testsuite/23_containers/vector/allocator/default_init.cc: Add a check using constant evaluation. * testsuite/23_containers/vector/bool/allocator/default_init.cc: Likewise. * testsuite/util/testsuite_allocator.h (default_init_allocator): Make all member functions and equality ops constexpr. 2025-05-02 Jonathan Wakely * src/c++11/Makefile.am: Simplify existing prerequisites for wchar and dual-abi targets that are built from other sources. Add similar prerequisites for more wchar and dual-abi files. * src/c++11/Makefile.in: Regenerate. * src/c++17/Makefile.am [ENABLE_DUAL_ABI]: Add prerequisites for dual-abi targets that are built from other sources. * src/c++17/Makefile.in: Regenerate. 2025-04-30 François Dumont Jonathan Wakely * testsuite/lib/libstdc++.exp (v3_target_compile): Strip version namespace from compiler output. * testsuite/20_util/aligned_storage/value.cc [_GLIBCXX_INLINE_VERSION]: Avoid align_msa check. * testsuite/20_util/function/cons/70692.cc: Remove now useless __8 namespace pattern. * testsuite/23_containers/map/48101_neg.cc: Likewise. * testsuite/23_containers/multimap/48101_neg.cc: Likewise. 2025-04-30 Tomasz Kamiński PR libstdc++/109162 * include/std/format (_Padding_sink::_M_update): Fixed condition for calling _M_force_update. * testsuite/std/format/debug.cc: Add test that reproduces this issue on 64bit architecture. * testsuite/std/format/ranges/sequence.cc: Another edge value test. 2025-04-29 Jonathan Wakely * include/bits/version.def (make_obj_using_allocator): Use no_stdname. * include/bits/version.h: Regenerate. 2025-04-29 Jonathan Wakely * include/bits/regex_compiler.h: Replace _GLIBCXX17_CONSTEXPR with constexpr and disable diagnostics with pragmas. (_AnyMatcher::operator()): Use constexpr-if instead of tag dispatching. Postpone calls to _M_translate until after checking result of earlier calls. (_AnyMatcher::_M_apply): Remove both overloads. (_BracketMatcher::operator(), _BracketMatcher::_M_ready): Replace tag dispatching with 'if constexpr'. (_BracketMatcher::_M_apply(_CharT, true_type)): Remove. (_BracketMatcher::_M_apply(_CharT, false_type)): Remove second parameter. (_BracketMatcher::_M_make_cache): Remove both overloads. * include/bits/regex_compiler.tcc (_BracketMatcher::_M_apply): Remove second parameter. * include/bits/regex_executor.tcc: Replace _GLIBCXX17_CONSTEXPR with constexpr and disable diagnostics with pragmas. (_Executor::_M_handle_backref): Replace __glibcxx_assert with static_assert. (_Executor::_M_handle_accept): Mark _S_opcode_backref case as unreachable for non-DFS mode and do not instantiate _M_handle_backref for that case. 2025-04-29 Barnabás Pőcze PR libstdc++/112934 * include/bits/stl_map.h (map::erase): Use _M_erase_unique. * include/bits/stl_set.h (set::erase): Likewise. * include/bits/stl_tree.h (_Rb_tree::_M_erase_unique): Add. 2025-04-29 Patrick Palka PR libstdc++/119427 * include/std/flat_map (_Flat_map_impl::erase_if): Replace this hidden friend with ... (_Flat_map_impl::_M_erase_if): ... this member function. (flat_map): Export _Flat_map_impl::_M_erase_if. (erase_if(flat_map)): Define. (flat_multimap): Export _Flat_map_impl::_M_erase_if. (erase_if(flat_multimap)): Define. * include/std/flat_set (_Flat_set_impl::erase_if): Replace with ... (_Flat_set_impl::_M_erase_if): ... this member function. (flat_set): Export _Flat_set_impl::_M_erase_if. (erase_if(flat_set)): Define. (flat_multiset): Export _Flat_set_impl::_M_erase_if. (erase_if(flat_multiset)): Define. * testsuite/23_containers/flat_map/1.cc (test07): New test. * testsuite/23_containers/flat_multimap/1.cc (test07): New test. * testsuite/23_containers/flat_multiset/1.cc (test09): New test. * testsuite/23_containers/flat_set/1.cc (test09): New test. 2025-04-29 Jonathan Wakely * include/bits/char_traits.h (char_traits::assign): Use constexpr-if unconditionally for C++11 and C++14. * include/bits/locale_conv.h (__do_str_codecvt): Likewise. * include/bits/ostream.h (basic_ostream::_S_cast_flt): Likewise. * include/bits/random.tcc (shuffle_order_engine::operator()) (seed_seq::seed_seq(Iter, Iter)): Likewise. * include/bits/shared_ptr_base.h (_Sp_counted_base::_M_release): Likewise. * include/bits/stl_tree.h (_Rb_tree::_M_move_data): Likewise. * include/bits/uniform_int_dist.h (uniform_int_distribution::operator()): Likewise. * include/bits/valarray_array.h (__valarray_default_construct) (__valarray_fill_construct, __valarray_copy_construct) (__valarray_copy_construct, __valarray_destroy_elements): Likewise. * include/experimental/numeric (lcm): Likewise. * include/std/bit (__rotl, __rotr, __countl_zero, __countr_zero) (__popcount, __bit_ceil) Likewise.: * include/std/bitset (operator>>): Likewise. * include/std/charconv (__to_chars_8, __to_chars_i) (__from_chars_alnum_to_val, from_chars): Likewise. * include/tr2/dynamic_bitset (__dynamic_bitset_base): Likewise. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line number. 2025-04-29 Jonathan Wakely * include/bits/std_function.h (_Target_handler): Remove. (function::target): Use constexpr-if for C++11 and C++14, with diagnostic pragmas to suppress warnings. 2025-04-29 Jonathan Wakely * include/bits/stl_vector.h (_S_do_relocate): Remove. (_S_relocate): Remove tag dispatching path. * include/bits/vector.tcc (reserve, _M_realloc_insert) (_M_realloc_append, _M_default_append): Add diagnostic pragmas and use 'if constexpr' in C++11 and C++14. Call std::__relocate_a directly instead of _S_relocate. 2025-04-29 Jonathan Wakely * include/bits/basic_string.h (operator+(string&&, string&&)): Do not assume that COW strings have equal allocators. Use constexpr-if unconditionally. * testsuite/21_strings/basic_string/allocator/char/operator_plus.cc: Remove cxx11_abi effective-target check. * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc: Likewise. 2025-04-28 Giuseppe D'Angelo * testsuite/20_util/shared_ptr/requirements/1.cc: Test both shared_ptr and weak_ptr. Add more tests. * testsuite/20_util/weak_ptr/requirements/1.cc: Removed as superseded by the other test. 2025-04-28 Tomasz Kamiński PR libstdc++/119970 * include/std/ostream (vprint_unicode) [_WIN32 && !__CYGWIN__]: Call _Str_sink::_M_span instead of view. * include/std/print (vprint_unicode) [_WIN32 && !__CYGWIN__]: Call _Str_sink::_M_span instead of view. 2025-04-28 Tomasz Kamiński * include/bits/ranges_base.h (__detail::__range_key_type): Replace remove_const_t with remove_cvref_t. (__detail::__range_mapped_type): Apply remove_cvref_t. * include/bits/stl_iterator.h: (__detail::__iter_key_t): Replace remove_const_t with __remove_cvref_t. (__detail::__iter_val_t): Apply __remove_cvref_t. * testsuite/23_containers/flat_map/1.cc: New tests. * testsuite/23_containers/flat_multimap/1.cc: New tests. * testsuite/23_containers/map/cons/deduction.cc: New tests. * testsuite/23_containers/map/cons/from_range.cc: New tests. * testsuite/23_containers/multimap/cons/deduction.cc: New tests. * testsuite/23_containers/multimap/cons/from_range.cc: New tests. * testsuite/23_containers/unordered_map/cons/deduction.cc: New tests. * testsuite/23_containers/unordered_map/cons/from_range.cc: New tests. * testsuite/23_containers/unordered_multimap/cons/deduction.cc: New tests. * testsuite/23_containers/unordered_multimap/cons/from_range.cc: New tests. 2025-04-28 Tomasz Kamiński * include/bits/unordered_map.h (unordered_map): Define constructors accepting: (_InputIterator, _InputIterator, const allocator_type&), (initializer_list, const allocator_type&), (unordered_multimap): Likewise. * include/debug/unordered_map (unordered_map): Likewise. (unordered_multimap): Likewise. * include/bits/unordered_set.h (unordered_set): Define constructors and deduction guide accepting: (_InputIterator, _InputIterator, const allocator_type&), (initializer_list, const allocator_type&), (unordered_multiset): Likewise. * include/debug/unordered_set (unordered_set): Likewise. (unordered_multiset): Likewise. * testsuite/23_containers/unordered_map/cons/66055.cc: New tests. * testsuite/23_containers/unordered_map/cons/deduction.cc: New tests. * testsuite/23_containers/unordered_multimap/cons/66055.cc: New tests. * testsuite/23_containers/unordered_multimap/cons/deduction.cc: New tests. * testsuite/23_containers/unordered_multiset/cons/66055.cc: New tests. * testsuite/23_containers/unordered_multiset/cons/deduction.cc: New tests. * testsuite/23_containers/unordered_set/cons/66055.cc: New tests. * testsuite/23_containers/unordered_set/cons/deduction.cc: New tests. 2025-04-25 Jonathan Wakely * include/bits/ptr_traits.h (to_address): Use markdown for formatting in Doxygen comments. 2025-04-25 Jonathan Wakely * src/c++11/Makefile.am: Add prerequisites for targets that depend on string-inst.cc. * src/c++11/Makefile.in: Regenerate. 2025-04-25 Jonathan Wakely * include/bits/move.h (addressof): Use __builtin_addressof directly. 2025-04-25 Jonathan Wakely * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Remove dg-error directives for additional c++26 errors. 2025-04-25 Jonathan Wakely * include/std/latch (latch::_M_a): Rename to _M_counter. 2025-04-25 Tomasz Kamiński PR libstdc++/109162 * include/bits/formatfwd.h (__simply_formattable_range): Moved from std/format. * include/std/format (__formatter_str::_format): Extracted escaped string handling to separate method... (__formatter_str::_M_format_escaped): Use __Padding_sink. (__formatter_str::_M_format): Adjusted implementation. (__formatter_str::_S_trunc): Extracted as namespace function... (__format::_truncate): Extracted from __formatter_str::_S_trunc. (__format::_Seq_sink): Removed forward declarations, made members protected and non-final. (_Seq_sink::_M_trim): Define. (_Seq_sink::_M_span): Renamed from view. (_Seq_sink::view): Returns string_view instead of span. (__format::_Str_sink): Moved after _Seq_sink. (__format::__format_padded): Use _Padding_sink. * testsuite/std/format/debug.cc: Add timeout and new tests. * testsuite/std/format/ranges/sequence.cc: Specify unicode as encoding and new tests. * testsuite/std/format/ranges/string.cc: Likewise. * testsuite/std/format/tuple.cc: Likewise. 2025-04-25 Tomasz Kamiński * testsuite/std/format/ranges/adaptors.cc: Updated test. 2025-04-25 Jonathan Wakely * testsuite/22_locale/ctype/is/string/89728_neg.cc: Remove dg-error for c++98_only effective target. 2025-04-25 Tomasz Kamiński PR libstdc++/119918 * include/bits/formatfwd.h (__format::_Align): Moved from std/format. (std::__throw_format_error, __format::__formatter_str) (__format::__formatter_ptr): Declare. * include/std/format (__format::_Align): Moved to bits/formatfwd.h. (__formatter_int::__formatter_int): Define. (__format::__formatter_ptr): Extracted from formatter for const void*. (std::formatter, formatter) (std::formatter): Delegate to __formatter_ptr<_CharT>. * include/std/thread (std::formatter): Constrain _CharT template parameter. (formatter::parse): Specify default aligment, and qualify __throw_format_error to disable ADL. (formatter::format): Use formatters to write directly to output. * testsuite/30_threads/thread/id/output.cc: Tests for formatting thread::id representing not-a-thread with padding and formattable concept. 2025-04-25 Tomasz Kamiński PR libstdc++/109162 * include/bits/version.def (format_ranges): Remove no_stdname and update value. * include/bits/version.h: Regenerate. * src/c++23/std.cc.in: Replace __glibcxx_format_ranges with __cpp_lib_format_ranges. * testsuite/std/format/formatter/lwg3944.cc: Likewise. * testsuite/std/format/parse_ctx.cc: Likewise. * testsuite/std/format/string.cc: Likewise. * testsuite/std/format/ranges/feature_test.cc: New test. 2025-04-25 Tomasz Kamiński PR libstdc++/109162 * include/bits/formatfwd.h (__format::__parsable_with) (__format::__formattable_with, __format::__formattable_impl) (__format::__has_debug_format, __format::__const_formattable_range) (__format::__maybe_const_range, __format::__maybe_const) (std::formattable): Moved from std/format. (__format::Iter_for, std::range_formatter): Forward declare. * include/bits/stl_queue.h (std::formatter): Forward declare. (std::queue, std::priority_queue): Befriend formatter specializations. * include/bits/stl_stack.h (std::formatter): Forward declare. (std::stack): Befriend formatter specializations. * include/std/format (__format::_Iter_for): Define as struct with (__format::__parsable_with, __format::__formattable_with) (__format::__formattable_impl, __format::__has_debug_format) (_format::__const_formattable_range, __format::__maybe_const_range) (__format::__maybe_const, std::formattable): Moved to bits/formatfwd.h. (std::range_formatter): Remove default argument specified in declaration in bits/formatfwd.h. * include/std/queue: Include bits/version.h before bits/stl_queue.h. (formatter, _CharT>) (formatter, _CharT>): Define. * include/std/stack: Include bits/version.h before bits/stl_stack.h (formatter, _CharT>): Define. * testsuite/std/format/ranges/adaptors.cc: New test. 2025-04-25 Jonathan Wakely * include/std/future (__future_base::_Task_state): Check invocable requirement here. (__future_base::_Task_state::_S_create): New static member function. (__future_base::_Task_state::_M_reset): Use _S_create. (__create_task_state): Remove. (packaged_task): Use _Task_state::_S_create instead of __create_task_state. * testsuite/30_threads/packaged_task/cons/dangling_ref.cc: Adjust dg-error patterns. * testsuite/30_threads/packaged_task/cons/lwg4154_neg.cc: Likewise. 2025-04-25 Jonathan Wakely * include/bits/stl_tree.h (_Rb_tree::_M_key_compare): New member function to invoke comparison function. (_Rb_tree): Use new member function instead of accessing the comparison function directly. 2025-04-24 Jonathan Wakely * testsuite/23_containers/forward_list/48101_neg.cc: Remove dg-prune-output that doesn't match anything. * testsuite/23_containers/list/48101_neg.cc: Likewise. * testsuite/23_containers/multiset/48101_neg.cc: Likewise. * testsuite/23_containers/set/48101_neg.cc: Likewise. 2025-04-24 Jonathan Wakely * include/std/generator (generator::yield_value): Add overload taking lvalue element_of view, as per LWG 3899. * testsuite/24_iterators/range_generators/lwg3899.cc: New test. 2025-04-24 François Dumont * testsuite/util/replacement_memory_operators.h: Adapt for -fno-exceptions context. * testsuite/23_containers/deque/capacity/shrink_to_fit.cc: Adapt test to check std::deque shrink_to_fit method. 2025-04-23 Andreas Schwab * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update. * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update. 2025-04-23 ZENG Hao * src/c++23/std.cc.in (atomic_signed_lock_free): Guard with preprocessor check for __cpp_lib_atomic_lock_free_type_aliases. (atomic_unsigned_lock_free): Likewise. 2025-04-22 Patrick Palka Revert: 2024-08-22 Patrick Palka * include/bits/iterator_concepts.h (__detail::__projected): Define an optimized partial specialization for when the projection is std::identity. * testsuite/24_iterators/indirect_callable/projected.cc: Verify the optimization. 2025-04-22 Andreas Schwab * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update. 2025-04-22 Andreas Schwab * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update. 2025-04-22 Rainer Orth * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Regenerate. * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise. 2025-04-22 Rainer Orth * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate. * config/abi/post/i386-solaris/amd64/baseline_symbols.txt: Likewise. * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise. * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt: Likewise. 2025-04-22 Jakub Jelinek * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update. * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt: Update. 2025-04-22 Tomasz Kamiński * testsuite/23_containers/flat_map/1.cc: Add dg-timeout-factor 2. * testsuite/23_containers/flat_multimap/1.cc: Likewise. * testsuite/std/format/ranges/map.cc: Likewise. * testsuite/std/format/ranges/sequence.cc: Likewise. * testsuite/std/format/ranges/string.cc: Likewise. 2025-04-22 Andreas Schwab * testsuite/util/testsuite_abi.cc (check_version): Update latestp to use GLIBCXX_3.4.35 and CXXABI_1.3.17. 2025-04-18 François Dumont * testsuite/util/debug/unordered_checks.h (fill_container): New helper method. (use_erased_local_iterator, invalid_local_iterator_pre_increment) (invalid_local_iterator_post_increment, invalid_local_iterator_compare) (invalid_local_iterator_range): Use latter. (fill_and_get_local_iterator): New, use fill_container. (use_invalid_local_iterator): Use latter. (invalid_local_iterator_arrow_operator): New test function. (invalid_local_iterator_copy_instantiation): New test function. (invalid_local_iterator_move_instantiation): New test function. (invalid_local_iterator_copy_assignment): New test function. (invalid_local_iterator_move_assignment): New test function. (invalid_local_iterator_const_conversion): New test function. * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_arrow_operator_neg.cc: New test case. * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_const_conversion_neg.cc: New test case. * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_copy_assignment_neg.cc: New test case. * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_copy_construction_neg.cc: New test case. * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_move_assignment_neg.cc: New test case. * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_move_construction_neg.cc: New test case. * testsuite/23_containers/unordered_map/debug/max_load_factor_neg.cc: Test unordered_map. * testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc: Test unordered_multimap. * testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc: Likewise. * testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc: Likewise. * testsuite/23_containers/unordered_multimap/debug/cend_neg.cc: Likewise. * testsuite/23_containers/unordered_multimap/debug/end1_neg.cc: Likewise. * testsuite/23_containers/unordered_multimap/debug/end2_neg.cc: Likewise. * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_arrow_operator_neg.cc: New test case. * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_const_conversion_neg.cc: New test case. * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_copy_assignment_neg.cc: New test case. * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_copy_construction_neg.cc: New test case. * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_move_assignment_neg.cc: New test case. * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_move_construction_neg.cc: New test case. * testsuite/23_containers/unordered_multimap/debug/max_load_factor_neg.cc: Test unordered_multimap. * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_arrow_operator_neg.cc: New test case. * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_const_conversion_neg.cc: New test case. * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_copy_assignment_neg.cc: New test case. * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_copy_construction_neg.cc: New test case. * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_move_assignment_neg.cc: New test case. * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_move_construction_neg.cc: New test case. * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_arrow_operator_neg.cc: New test case. * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_const_conversion_neg.cc: New test case. * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_copy_assignment_neg.cc: New test case. * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_copy_construction_neg.cc: New test case. * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_move_assignment_neg.cc: New test case. * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_move_construction_neg.cc: New test case. 2025-04-18 Tomasz Kamiński * doc/xml/manual/appendix_contributing.xml: Add 'and functions'. 2025-04-17 Jason Merrill * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust diagnostic. 2025-04-17 Tomasz Kamiński PR libstdc++/119840 * include/std/format (_M_parse_fill_and_align): Cast elements of __not_fill to _CharT. 2025-04-17 Jonathan Wakely * include/std/format (format_kind): Do not use 'not' alternative token to make the primary template ill-formed. Use the undeclared identifier __primary_template_not_defined and a comment that will appear in diagnostics. * testsuite/std/format/ranges/format_kind_neg.cc: New test. 2025-04-17 Tomasz Kamiński PR libstdc++/109162 * include/std/format (__format::__simply_formattable_range): Define. (range_formatter::format): Do not instantiate _M_format for mutable _Rg if const _Rg can be used. 2025-04-16 Tomasz Kamiński PR libstdc++/109162 * include/std/format (range_formatter::format): Format const range, only if reference type is not changed. * testsuite/std/format/ranges/formatter.cc: New tests. 2025-04-16 Tomasz Kamiński PR libstdc++/109162 * include/std/format (__formatter_int::_M_format_character_escaped) (__formatter_str::format): Use __sink.out() to produce _Sink_iter. (__format::__const_formattable_range): Moved closer to range_formatter. (__format::__maybe_const_range): Use `__conditional_t` and moved closer to range_formatter. (__format::__format_padded, __format::maybe_const) (__format::__indexed_formatter_storage, __format::__tuple_formatter) (std::formatter, _CharT>>) (std::formatter, _CharT): Define. (std::formatter<_Rg, _CharT>::format): Cast incoming range to __format::__maybe_const_range<_Rg, _CharT>&. (std::formatter<_Rg, _CharT>::_M_format): Extracted from format, and use __format_padded. (std::formatter<_Rg, _CharT>::_M_format_no_padding): Rename... (std::formatter<_Rg, _CharT>::_M_format_elems): ...to this. (std::formatter<_Rg, _CharT>::_M_format_with_padding): Extracted as __format_padded. * testsuite/util/testsuite_iterators.h (test_input_range_nocopy): Define. * testsuite/std/format/ranges/formatter.cc: Tests for `m` specifier. * testsuite/std/format/ranges/sequence.cc: Tests for array and subrange. * testsuite/std/format/ranges/map.cc: New test. * testsuite/std/format/tuple.cc: New test. 2025-04-15 Jonathan Wakely * include/std/ranges (__glibcxx_want_ranges_iota): Do not define. 2025-04-15 Jonathan Wakely * include/std/numeric (ranges): Only declare namespace for C++23 and later. (ranges::iota_result): Fix indentation. * testsuite/17_intro/names.cc: Check ranges is not used as an identifier before C++20. 2025-04-15 Tomasz Kamiński PR libstdc++/109162 * include/std/format (__format::__has_debug_format, _Pres_type::_Pres_seq) (_Pres_type::_Pres_str, __format::__Stackbuf_size): Define. (_Separators::_S_squares, _Separators::_S_parens, _Separators::_S_comma) (_Separators::_S_colon): Define additional constants. (_Spec::_M_parse_fill_and_align): Define overload accepting list of excluded characters for fill, and forward existing overload. (__formatter_str::_M_format_range): Define. (__format::_Buf_sink) Use __Stackbuf_size for size of array. (__format::__is_map_formattable, std::range_formatter) (std::formatter<_Rg, _CharT>): Define. * src/c++23/std.cc.in (std::format_kind, std::range_format) (std::range_formatter): Export. * testsuite/std/format/formatter/lwg3944.cc: Guarded tests with __glibcxx_format_ranges. * testsuite/std/format/formatter/requirements.cc: Adjusted for standard behavior. * testsuite/23_containers/vector/bool/format.cc: Test vector formatting. * testsuite/std/format/ranges/format_kind.cc: New test. * testsuite/std/format/ranges/formatter.cc: New test. * testsuite/std/format/ranges/sequence.cc: New test. * testsuite/std/format/ranges/string.cc: New test. 2025-04-15 Jonathan Wakely PR libstdc++/119748 * include/bits/basic_string.h (_S_copy_chars): Only optimize for contiguous iterators that are convertible to const charT*. Use explicit conversion to charT after dereferencing iterator. (_S_copy_range): Likewise for contiguous ranges. * include/bits/basic_string.tcc (_M_construct): Use explicit conversion to charT after dereferencing iterator. * include/bits/cow_string.h (_S_copy_chars): Likewise. (basic_string(from_range_t, R&&, const Allocator&)): Likewise. Only optimize for contiguous iterators that are convertible to const charT*. * testsuite/21_strings/basic_string/cons/char/119748.cc: New test. * testsuite/21_strings/basic_string/cons/wchar_t/119748.cc: New test. 2025-04-15 Jonathan Wakely * testsuite/util/testsuite_iterators.h (test_container): Define array constructor for C++98 as well. 2025-04-14 Jonathan Wakely PR libstdc++/21334 * doc/xml/manual/using.xml: Document that container data race avoidance rules do not apply to COW std::string. * doc/html/*: Regenerate. 2025-04-14 Tomasz Kamiński PR libstdc++/119725 * testsuite/std/format/debug.cc: Updated dg-options. * testsuite/std/format/debug_nonunicode.cc: Updated dg-options. 2025-04-11 Jonathan Wakely * src/c++17/fast_float/LOCAL_PATCHES: Update. 2025-04-11 Evgeny Karpov * src/c++17/fast_float/fast_float.h (full_multiplication): Support aarch64-w64-mingw32 target. 2025-04-11 Jonathan Wakely * include/bits/basic_string.h (_S_copy_chars): Replace overloads with constexpr-if and extend optimization to all contiguous iterators. * src/c++11/string-inst.cc: Extend comment. 2025-04-11 Tomasz Kamiński PR libstdc++/111055 * include/bits/version.def (containers_ranges): Define. * include/bits/version.h: Regenerate. * include/bits/ranges_base.h (__detail::__container_compatible_range) (__detail::__range_to_alloc_type, __detail::__range_mapped_type) (__detail::__range_key_type): Depend on __glibcxx_containers_ranges instead of __glibcxx_ranges_to_container. * include/bits/basic_string.h: Replace __glibcxx_ranges_to_container with __glibcxx_containers_ranges. * include/bits/cow_string.h: Likewise. * include/bits/deque.tcc: Likewise. * include/bits/forward_list.h: Likewise. * include/bits/stl_bvector.h: Likewise. * include/bits/stl_deque.h: Likewise. * include/bits/stl_list.h: Likewise. * include/bits/stl_map.h: Likewise. * include/bits/stl_multimap.h: Likewise. * include/bits/stl_multiset.h: Likewise. * include/bits/stl_queue.h: Likewise. * include/bits/stl_set.h: Likewise. * include/bits/stl_stack.h: Likewise. * include/bits/stl_vector.h: Likewise. * include/bits/unordered_map.h: Likewise. * include/bits/unordered_set.h: Likewise. * include/bits/vector.tcc: Likewise. * include/debug/deque: Likewise. * include/debug/forward_list: Likewise. * include/debug/list: Likewise. * include/debug/map.h: Likewise. * include/debug/multimap.h: Likewise. * include/debug/multiset.h: Likewise. * include/debug/set.h: Likewise. * include/debug/unordered_map: Likewise. * include/debug/unordered_set: Likewise. * include/debug/vector: Likewise. * include/std/deque: Provide __cpp_lib_containers_ranges. * include/std/forward_list: Likewise. * include/std/list: Likewise. * include/std/map: Likewise. * include/std/queue: Likewise. * include/std/set: Likewise. * include/std/stack: Likewise. * include/std/string: Likewise. * include/std/unordered_map: Likewise. * include/std/unordered_set: Likewise. * include/std/vector: Likewise. * testsuite/21_strings/basic_string/cons/from_range.cc: Test for value __cpp_lib_containers_ranges. * testsuite/23_containers/deque/cons/from_range.cc: Likewise. * testsuite/23_containers/forward_list/cons/from_range.cc: Likewise. * testsuite/23_containers/list/cons/from_range.cc: Likewise. * testsuite/23_containers/map/cons/from_range.cc: Likewise. * testsuite/23_containers/multimap/cons/from_range.cc: Likewise. * testsuite/23_containers/multiset/cons/from_range.cc: Likewise. * testsuite/23_containers/priority_queue/cons_from_range.cc: Likewise. * testsuite/23_containers/queue/cons_from_range.cc: Likewise. * testsuite/23_containers/set/cons/from_range.cc: Likewise. * testsuite/23_containers/stack/cons_from_range.cc: Likewise. * testsuite/23_containers/unordered_map/cons/from_range.cc: Likewise. * testsuite/23_containers/unordered_multimap/cons/from_range.cc: Likewise. * testsuite/23_containers/unordered_multiset/cons/from_range.cc: Likewise. * testsuite/23_containers/unordered_set/cons/from_range.cc: Likewise. * testsuite/23_containers/vector/bool/cons/from_range.cc: Likewise. * testsuite/23_containers/vector/cons/from_range.cc: Likewise. 2025-04-11 Jonathan Wakely Tomasz Kamiński PR libstdc++/111055 * include/bits/basic_string.h (_S_copy_range): New function. (basic_string(from_range_t, R%%, const Alloc&)): New constructor. (append_range, assign_range, insert_range, replace_with_range): New functions. * include/bits/cow_string.h: Likewise. * testsuite/21_strings/basic_string/cons/from_range.cc: New test. * testsuite/21_strings/basic_string/modifiers/append/append_range.cc: New test. * testsuite/21_strings/basic_string/modifiers/assign/assign_range.cc: New test. * testsuite/21_strings/basic_string/modifiers/insert/insert_range.cc: New test. * testsuite/21_strings/basic_string/modifiers/replace/replace_with_range.cc: New test. 2025-04-11 Tomasz Kamiński PR libstdc++/109162 * include/bits/chrono_io.h (__detail::_Widen): Moved to std/format file. * include/bits/unicode-data.h: Regnerate. * include/bits/unicode.h (__unicode::_Utf_iterator::_M_units) (__unicode::__should_escape_category): Define. * include/std/format (_GLIBCXX_WIDEN_, _GLIBCXX_WIDEN): Copied from include/bits/chrono_io.h. (__format::_Widen): Moved from include/bits/chrono_io.h. (__format::_Term_char, __format::_Escapes, __format::_Separators) (__format::__should_escape_ascii, __format::__should_escape_unicode) (__format::__write_escape_seq, __format::__write_escaped_char) (__format::__write_escaped_acii, __format::__write_escaped_unicode) (__format::__write_escaped): Define. (__formatter_str::_S_trunc): Extracted truncation of character sequences. (__formatter_str::format): Handle _Pres_esc. (__formatter_int::_M_do_parse) [__glibcxx_format_ranges]: Parse '?'. (__formatter_int::_M_format_character_escaped): Define. (formatter<_CharT, _CharT>::format, formatter::format): Handle _Pres_esc. (__formatter_str::set_debug_format, formatter<...>::set_debug_format) Guard with __glibcxx_format_ranges. (__format::_Fixedbuf_sink): Define. * testsuite/23_containers/vector/bool/format.cc: Use __format::_Widen and remove unnecessary include. * testsuite/std/format/debug.cc: New test. * testsuite/std/format/debug_nonunicode.cc: New test. * testsuite/std/format/parse_ctx.cc (escaped_strings_supported): Define to true if __glibcxx_format_ranges is defined. * testsuite/std/format/string.cc (escaped_strings_supported): Define to true if __glibcxx_format_ranges is defined. 2025-04-10 Jonathan Wakely * include/bits/version.def (constrained_equality): Only define as 202411 for C++23 and later, use 202403 for C++20. * include/bits/version.h: Regenerate. * testsuite/20_util/expected/equality_constrained.cc: Remove TODO comment. 2025-04-10 John David Anglin * config/os/hpux/os_defines.h: Remove _GLIBCXX_USE_LONG_LONG define. 2025-04-09 Patrick Palka PR libstdc++/115046 PR libstdc++/112490 * include/bits/stl_iterator.h (basic_const_iterator::operator-): Replace non-dependent basic_const_iterator function parameter with a dependent one of type basic_const_iterator<_It2> where _It2 matches _It. * testsuite/std/ranges/adaptors/as_const/1.cc (test04): New test. 2025-04-08 Jonathan Wakely PR libstdc++/119671 * include/std/format (__formatter_fp::format): Do not invalidate __wstr unless _M_localized returns a valid string. * testsuite/std/format/functions/format.cc: Check wide string formatting of floating-point types with classic locale. 2025-04-07 Jonathan Wakely PR libstdc++/119642 * include/bits/formatfwd.h: Remove stray pragma. 2025-04-07 Jonathan Wakely * include/precompiled/stdc++.h: Include and . Include unconditionally. 2025-04-07 Jonathan Wakely * doc/doxygen/user.cfg.in (INPUT): Add flat_map, flat_set, text_encoding, stdbit.h and stdckdint.h. 2025-04-07 Thomas Schwinge PR target/119645 * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY) [GCN, nvptx]: Hard-code results. * configure: Regenerate. * configure.host [GCN, nvptx] (atomicity_dir): Set to 'cpu/generic/atomicity_builtins'. 2025-04-04 Patrick Palka PR libstdc++/119620 * include/std/flat_set (_Flat_set_impl::_M_try_emplace): Split out into two overloads, one taking at least one argument and one taking zero arguments. Turn __k into an auto&& reference bound to __arg if it's already a value_type and otherwise bound to a lifetime-extended value_type temporary. * testsuite/23_containers/flat_multiset/1.cc (test08): New test. * testsuite/23_containers/flat_set/1.cc (test08): New test. 2025-04-04 Jonathan Wakely PR libstdc++/101587 * include/bits/ranges_uninitialized.h (__detail::__mindist): Remove. (ranges::uninitialized_copy, ranges::uninitialized_copy_n) (ranges::uninitialized_move, ranges::uninitialized_move_n): Use comparison and assignment instead of __mindist. * testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc: Check with ranges that use integer-like class type for difference type. * testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc: Likewise. 2025-04-04 Tomasz Kamiński PR libstdc++/109162 * include/Makefile.am: Add bits/formatfwd.h. * include/Makefile.in: Add bits/formatfwd.h. * include/bits/version.def: Define __glibcxx_format_ranges without corresponding std name. * include/bits/version.h: Regenerate. * include/std/format (basic_format_context, __format::__char): Move declartions to bits/formatfwd.h. (formatter<_Tp, _CharT>): Remove default argument for _CharT parameter, now specified in forward declaration in bits/formatfwd.h. * include/std/vector (formatter<_Bit_reference, _CharT>): Define. * include/bits/formatfwd.h: New file with forward declarations for bits of std/format. * testsuite/23_containers/vector/bool/format.cc: New test. 2025-04-04 Jonathan Wakely * include/bits/basic_string.h: Check __glibcxx_string_view and __glibcxx_variant instead of __cplusplus >= 2017L. * include/bits/cow_string.h: Likewise. 2025-04-04 Jonathan Wakely * include/bits/basic_string.tcc: Fix whitespace. 2025-04-04 Arsen Arsenović * include/bits/version.tpl: Implement no_stdname. * include/bits/version.def: Document no_stdname. 2025-04-03 Thomas Schwinge * config/cpu/nvptx/t-nvptx: Remove. * configure.host [nvptx]: Adjust. 2025-04-03 Thomas Schwinge PR target/119573 * config/cpu/nvptx/t-nvptx (AM_MAKEFLAGS): Don't amend. 2025-04-03 Tomasz Kamiński * testsuite/std/format/functions/format.cc: Restored line. 2025-04-03 Tomasz Kamiński PR libstdc++/119593 * include/bits/unicode.h (__unicode::__literal_encoding_is_unicode<_CharT>): Corrected handing for UTF-16 and UTF-32 with "LE" or "BE" suffix. * include/std/format (__formatter_str::_S_character_width): Define. (__formatter_str::_S_character_width): Updated passed char length. * testsuite/std/format/functions/format.cc: Test for wchar_t. 2025-04-02 John David Anglin * config/os/hpux/os_defines.h: Only use long long when __cplusplus >= 201103L. 2025-04-02 Iain Sandoe * testsuite/lib/prune.exp: Prune ld warning about duplicatei rpaths. 2025-04-01 Jonathan Wakely PR libstdc++/114945 * include/bits/vector.tcc (vector::_M_default_append): Add unreachable condition so the compiler knows that _M_finish is not null. * testsuite/23_containers/vector/capacity/114945.cc: New test. 2025-04-01 Thomas Schwinge PR target/119369 * config/cpu/gcn/cpu_defines.h: New. * configure.host [GCN] (cpu_defines_dir): Point to it. 2025-03-31 Jonathan Wakely PR libstdc++/110498 * include/bits/vector.tcc (vector::_M_reallocate): Hoist loads of begin() and end() before allocation and use them to state an unreachable condition. * testsuite/23_containers/vector/bool/capacity/110498.cc: New test. 2025-03-31 Jonathan Wakely PR libstdc++/114758 * include/bits/vector.tcc (vector::_M_fill_insert): Hoist loads of begin() and end() before allocation. * testsuite/23_containers/vector/bool/capacity/114758.cc: New test. 2025-03-31 Jonathan Wakely PR libstdc++/119550 * acinclude.m4 (GLIBCXX_STRUCT_TM_TM_ZONE): New macro. * config.h.in: Regenerate. * configure: Regenerate. * configure.ac: Use GLIBCXX_STRUCT_TM_TM_ZONE. * include/bits/chrono_io.h (__formatter_chrono::_M_c): Check _GLIBCXX_USE_STRUCT_TM_TM_ZONE instead of _GLIBCXX_HAVE_STRUCT_TM_TM_ZONE. 2025-03-31 Jonathan Wakely * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make std::basic_string::_M_construct patterns more precise. 2025-03-31 Jonathan Wakely PR libstdc++/119545 * include/std/tuple (operator==): Convert comparison results to bool. * testsuite/20_util/tuple/comparison_operators/119545.cc: New test. 2025-03-31 Tomasz Kamiński PR libstdc++/119517 * include/bits/chrono_io.h (formatter): Add __format::__char for _CharT and adjust parse and format method signatures. * testsuite/std/time/format/pr119517.cc: New test. 2025-03-31 Jakub Jelinek PR tree-optimization/103827 PR tree-optimization/80331 PR tree-optimization/87502 * config/abi/pre/gnu.ver (GLIBCXX_3.4.34): Use [jmy] rather than m in pattern for _M_construct(char const*, size_t). 2025-03-30 Jan Hubicka PR tree-optimization/103827 PR tree-optimization/80331 PR tree-optimization/87502 * config/abi/pre/gnu.ver: Add version for _M_construct * include/bits/basic_string.h: (basic_string::_M_construct): Declare. (basic_string constructors): Use it. * include/bits/basic_string.tcc: (basic_string::_M_construct): New template. * src/c++11/string-inst.cc: Instantated S::_M_construct. 2025-03-28 Jonathan Wakely PR libstdc++/117983 * testsuite/23_containers/vector/modifiers/insert/117983.cc: New test. 2025-03-28 David Malcolm * testsuite/17_intro/shared_with_static_deps.cc: Fix malformed dg-require-static-libstdcxx directive. * testsuite/17_intro/static.cc: Likewise. * testsuite/18_support/type_info/110572.cc: Likewise. * testsuite/20_util/to_chars/4.cc: Likewise. * testsuite/std/time/tzdb_list/pr118811.cc: Likewise. 2025-03-27 Jonathan Wakely PR libstdc++/101587 * include/bits/ranges_uninitialized.h (__detail::__mindist): New function object. (ranges::uninitialized_copy, ranges::uninitialized_copy_n) (ranges::uninitialized_move, ranges::uninitialized_move_n): Use __mindist instead of std::min. * testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc: Check ranges with difference difference types. * testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc: Likewise. 2025-03-27 Jonathan Wakely * include/bits/chrono_io.h (__formatter_chrono::_M_c): Use const_cast when setting tm.tm_zone. 2025-03-27 Jonathan Wakely * src/c++20/tzdata.zi: Import new file from 2025b release. 2025-03-27 Sam James * testsuite/std/format/string_neg.cc: Add missing brace for dg-error. 2025-03-27 Giuseppe D'Angelo PR libstdc++/119488 * include/bits/version.def (constexpr_algorithms): Bump the feature-testing macro. * include/bits/version.h: Regenerate. * testsuite/25_algorithms/cpp_lib_constexpr.cc: Test the bumped value for the feature-testing macro. 2025-03-27 Giuseppe D'Angelo * include/bits/algorithmfwd.h (stable_partition): Mark it as constexpr for C++26. * include/bits/ranges_algo.h (__stable_partition_fn): Likewise. * include/bits/stl_algo.h (stable_partition): Mark it as constexpr for C++26; during constant evaluation use a new codepath where a temporary buffer of 1 element is used. * testsuite/25_algorithms/headers/algorithm/synopsis.cc (stable_partition): Add constexpr. * testsuite/25_algorithms/stable_partition/constexpr.cc: New test. 2025-03-27 Giuseppe D'Angelo * include/bits/algorithmfwd.h (inplace_merge): Mark it as constexpr for C++26. * include/bits/ranges_algo.h (__inplace_merge_fn): Likewise. * include/bits/stl_algo.h (inplace_merge): Mark it as constexpr; during constant evaluation, dispatch to the non-allocating codepath. * testsuite/25_algorithms/headers/algorithm/synopsis.cc (inplace_merge): Add constexpr. * testsuite/25_algorithms/inplace_merge/constexpr.cc: New test. 2025-03-27 Jonathan Wakely PR libstdc++/119469 * include/bits/iterator_concepts.h (_IterMove::__result): Use decltype-specifier instead of an explicit type. * testsuite/24_iterators/customization_points/iter_move.cc: Check results for function references. 2025-03-26 Giuseppe D'Angelo * include/bits/version.def (constexpr_algorithms): Change the value of the feature-testing macro. * include/bits/version.h: Regenerate. * testsuite/25_algorithms/cpp_lib_constexpr.cc: Amend the check of the feature-testing macro. 2025-03-26 Tomasz Kamiński PR libstdc++/119415 * include/std/flat_set (_Flat_set_impl:insert_range): Replace __detail::__cpp17_input_iterator with __has_input_iter_cat. * testsuite/23_containers/flat_multiset/1.cc: New tests * testsuite/23_containers/flat_set/1.cc: New tests 2025-03-26 Tomasz Kamiński PR libstdc++/111055 * include/bits/deque.tcc (deque::prepend_range, deque::append_range) (deque::insert_range, __advance_dist): Define. (deque::_M_range_prepend, deque::_M_range_append): Extract from _M_range_insert_aux for _ForwardIterator(s). * include/bits/stl_deque.h (deque::assign_range): Define. (deque::prepend_range, deque::append_range, deque::insert_range): Declare. (deque(from_range_t, _Rg&&, const allocator_type&)): Define constructor and deduction guide. * include/debug/deque (deque::prepend_range, deque::append_range) (deque::assign_range): Define. (deque(from_range_t, _Rg&&, const allocator_type&)): Define constructor and deduction guide. * testsuite/23_containers/deque/cons/from_range.cc: New test. * testsuite/23_containers/deque/modifiers/append_range.cc: New test. * testsuite/23_containers/deque/modifiers/assign/assign_range.cc: New test. * testsuite/23_containers/deque/modifiers/prepend_range.cc: New test. * testsuite/23_containers/deque/modifiers/insert/insert_range.cc: New file. 2025-03-25 Jonathan Wakely * include/std/ranges (ranges::to): Allow unions as well as non-union class types. * testsuite/std/ranges/conv/lwg4229.cc: New test. 2025-03-25 Jonathan Wakely PR libstdc++/108487 * include/bits/stl_vector.h (vector(initializer_list)): Call _M_range_initialize_n instead of _M_range_initialize. (vector(InputIterator, InputIterator)): Use _M_range_initialize_n for C++20 sized sentinels and forward iterators. (vector(from_range_t, R&&)): Use _M_range_initialize_n for sized ranges and forward ranges. (vector::_M_range_initialize(FwIt, FwIt, forward_iterator_tag)): Likewise. (vector::_M_range_initialize_n): New function. * testsuite/23_containers/vector/cons/108487.cc: New test. 2025-03-25 Jonathan Wakely * include/debug/vector (vector::assign_range): Use change in capacity to detect reallocation. (vector::insert_range, vector::append_range): Likewise. Remove unused variables. 2025-03-25 Jonathan Wakely * include/bits/stl_bvector.h (vector::assign_range): More efficient implementation for forward/sized ranges. (vector::append_range): Handle potentially overlapping range. * include/bits/stl_vector.h (vector(from_range_t, R&&, Alloc)): Do not use append_range for non-sized input range case. (vector::append_range): Handle potentially overlapping range. * include/bits/vector.tcc (vector::insert_range): Forward range instead of moving it. * testsuite/23_containers/vector/bool/modifiers/insert/append_range.cc: Test overlapping ranges. * testsuite/23_containers/vector/modifiers/append_range.cc: Likewise. 2025-03-25 Jonathan Wakely PR libstdc++/118699 * testsuite/27_io/filesystem/operations/copy.cc: Check copying a file to a directory. 2025-03-25 Jonathan Wakely PR libstdc++/119429 * include/std/format (__format::_Scanner::_Scanner): Cast default argument to size_t. 2025-03-25 Tomasz Kamiński PR libstdc++/119415 * include/std/flat_set (_Flat_set_impl:insert_range): Add __detail::__cpp17_input_iterator check. * testsuite/23_containers/flat_multiset/1.cc: New tests * testsuite/23_containers/flat_set/1.cc: New tests 2025-03-24 Jonathan Wakely * doc/xml/manual/policy_data_structures_biblio.xml: Fix two broken links. * doc/html/manual/policy_data_structures.html: Regenerate. 2025-03-24 Jonathan Wakely PR libstdc++/101527 * testsuite/24_iterators/common_iterator/101527.cc: New test. * testsuite/24_iterators/counted_iterator/101527.cc: New test. 2025-03-24 Jonathan Wakely * include/bits/stl_bvector.h (vector): Enforce the C++20 requirement that the allocator's value_type matches the container. * testsuite/23_containers/vector/bool/cons/from_range.cc: Fix incorrect allocator type. 2025-03-21 Jonathan Wakely PR libstdc++/117214 * configure.ac: Use AC_STRUCT_TIMEZONE. * config.h.in: Regenerate. * configure: Regenerate. * include/bits/chrono_io.h (__formatter_chrono::_M_c): Set tm_isdst and tm_zone. * testsuite/std/time/format/pr117214.cc: Check %c formatting of zoned_time and local time. 2025-03-21 XU Kailiang Jonathan Wakely PR libstdc++/117214 * include/bits/chrono_io.h (__formatter_chrono::_M_c): Use _M_locale_fmt to format %c time point. * testsuite/std/time/format/pr117214.cc: New test. 2025-03-21 Jonathan Wakely * include/bits/chrono_io.h (__formatter_chrono::_M_locale_fmt): Imbue locale into ostringstream. * testsuite/std/time/format/localized.cc: Check that correct locale is used for call to time_put::put. 2025-03-21 Jonathan Wakely * include/bits/stl_vector.h (vector(from_range_t, Alloc)): Use delegating constructor instead of RAII guards. Use append_range for unsized input range case. 2025-03-21 Jonathan Wakely * src/c++23/std.compat.cc.in: Only export and contents for C++26 and later. 2025-03-21 Jonathan Wakely * src/c++23/std.cc.in (tuple_element, tuple_element_t) (tuple_size, tuple_size_v, get): Export. (ranges::cache_latest_view, views::cache_latest): Export. (ranges::to_input_view, views::to_input): Export. (from_range_t, from_range): Export. 2025-03-20 Tomasz Kamiński * include/debug/unordered_map (unordered_map): Add from_range constructors and deduction guides. (unordered_multimap): Likewise. * include/debug/unordered_set (unordered_set): Add from_range constructors and deduction guides. (unordered_multiset): Likewise. 2025-03-20 Jonathan Wakely * include/debug/map.h (map): Add from_range constructors and deduction guides. * include/debug/multimap.h (multimap): Likewise. * include/debug/multiset.h (multiset): Likewise. * include/debug/set.h (set): Likewise. 2025-03-20 Jakub Jelinek * testsuite/18_support/numeric_limits/traps.cc (main): Fix comment typo. 2025-03-19 Jonathan Wakely * doc/xml/manual/test.xml: Fix default for -std option. * doc/html/manual/test.html: Regenerate. 2025-03-19 Jonathan Wakely * include/bits/locale_facets_nonio.tcc (time_put::do_put): Fix typo in comment. 2025-03-19 François Dumont * testsuite/23_containers/set/requirements/explicit_instantiation/alloc_ptr.cc: Activate the template member tests involving __cpp_lib_ranges_to_container support. 2025-03-19 Jonathan Wakely * testsuite/20_util/stdbit/1.cc: Include instead of . 2025-03-19 Tomasz Kamiński * include/bits/ranges_base.h (__detail::__range_key_type): Replace RV::first_type with tuple_element_t<0, RV>. (__detail::__range_mapped_type) Replace RV::second_type with tuple_element_t<1, RV>. * testsuite/23_containers/flat_map/1.cc: New tests. * testsuite/23_containers/flat_multimap/1.cc: New tests. * testsuite/23_containers/map/cons/from_range.cc: New tests. * testsuite/23_containers/multimap/cons/from_range.cc: New tests. * testsuite/23_containers/unordered_map/cons/from_range.cc: New tests. * testsuite/23_containers/unordered_multimap/cons/from_range.cc: New tests. 2025-03-19 Tomasz Kamiński * include/bits/unordered_map.h (unordered_map(from_range_t, _Rg&&, const allocator_type&)) (unordered_multimap(from_range_t, _Rg&&, const allocator_type&)): Define. * include/bits/unordered_set.h (unordered_set(from_range_t, _Rg&&, const allocator_type&)) (unordered_multiset(from_range_t, _Rg&&, const allocator_type&)): Define. * testsuite/23_containers/unordered_map/cons/from_range.cc: New tests. New tests. * testsuite/23_containers/unordered_multimap/cons/from_range.cc: New tests. * testsuite/23_containers/unordered_multiset/cons/from_range.cc: New tests. * testsuite/23_containers/unordered_set/cons/from_range.cc: New tests. * testsuite/std/ranges/conv/1.cc: New tests. 2025-03-19 Tomasz Kamiński PR libstdc++/119358 * include/bits/unordered_map.h (unordered_multimap::insert_range): Cast ranges::distance to size_type before passing to _M_rehash_insert. * include/bits/unordered_set.h (unordered_multiset::insert_range): Same as unordered_multimap::insert_range. * testsuite/23_containers/unordered_multimap/cons/from_range.cc: New tests. * testsuite/23_containers/unordered_multiset/cons/from_range.cc: New tests. 2025-03-18 Tomasz Kamiński PR libstdc++/111055 * include/bits/unordered_map.h (unordered_map): Define from_range constructors and insert_range member. (unordered_multimap): Likewise. * testsuite/23_containers/unordered_multimap/cons/from_range.cc: New test. * testsuite/23_containers/unordered_multimap/modifiers/insert_range.cc: New test. * testsuite/23_containers/unordered_map/cons/from_range.cc: New test. * testsuite/23_containers/unordered_map/modifiers/insert_range.cc: New test. 2025-03-18 Tomasz Kamiński PR libstdc++/111055 * include/bits/hashtable.h (_M_rehash_insert) (_M_insert_range_multi): Extracted rehashing for range insertion to separate function. * include/bits/unordered_set.h (unordered_set): Define from_range constructors and insert_range member. (unordered_multiset) Likewise. * testsuite/23_containers/unordered_multiset/cons/from_range.cc: New test. * testsuite/23_containers/unordered_multiset/modifiers/insert_range.cc: New test. * testsuite/23_containers/unordered_set/cons/from_range.cc: New test. * testsuite/23_containers/unordered_set/modifiers/insert_range.cc: New test. 2025-03-18 Tomasz Kamiński PR libstdc++/111055 * include/bits/stl_multiset.h: (inser_range) (multiset(from_range_t, _Rg&&, const _Compare&, const _Alloc&)) (multiset(from_range_t, _Rg&&, const _Alloc&)): Define. * include/bits/stl_set.h: (set(from_range_t, _Rg&&, const _Alloc&)) (set(from_range_t, _Rg&&, const _Compare&, const _Alloc&), insert_range): Define. * testsuite/23_containers/multiset/cons/from_range.cc: New test. * testsuite/23_containers/multiset/modifiers/insert/insert_range.cc: New test. * testsuite/23_containers/set/cons/from_range.cc: New test. * testsuite/23_containers/set/modifiers/insert/insert_range.cc: New test. 2025-03-18 Tomasz Kamiński PR libstdc++/111055 * include/bits/ranges_base.h (__detail::__range_to_alloc_type): Define. * include/bits/stl_multimap.h: (inser_range) (multimap(from_range_t, _Rg&&, const _Compare&, const _Alloc&)) (multimap(from_range_t, _Rg&&, const _Alloc&)): Define. * include/bits/stl_map.h: (map(from_range_t, _Rg&&, const _Alloc&)) i (map(from_range_t, _Rg&&, const _Compare&, const _Alloc&), insert_range): Define. * testsuite/23_containers/multimap/cons/from_range.cc: New test. * testsuite/23_containers/multimap/modifiers/insert/insert_range.cc: New test. * testsuite/23_containers/map/cons/from_range.cc: New test. * testsuite/23_containers/map/modifiers/insert/insert_range.cc: New test. 2025-03-14 Patrick Palka PR libstdc++/119282 * include/bits/stl_vector.h (vector::vector(from_range_t)): Add missing 'constexpr' to local class _Clear. * testsuite/std/ranges/conv/1.cc (test_pr119282): New test. 2025-03-14 Tomasz Kamiński PR libstdc++/111138 * include/std/ranges (_ZipTransform::operator()): Create separate overload for calls with empty range pack, and add move_constructible, regular_invocable and is_object_v>> constraints. * testsuite/std/ranges/zip_transform/1.cc: New tests Jonathan Wakely 2025-03-14 Thomas Schwinge PR target/92713 PR target/101544 * config/cpu/nvptx/cpu_defines.h: New. * config/cpu/nvptx/t-nvptx: Likewise. * configure.host: Handle GCN, nvptx. 2025-03-14 Tomasz Kamiński * testsuite/23_containers/priority_queue/cons_from_range.cc: Add `#include . * testsuite/23_containers/priority_queue/members/push_range.cc: Add `#include . 2025-03-14 Giuseppe D'Angelo * include/bits/shared_ptr_base.h (lock): Fixed a compile error when calling lock() on a weak_ptr, by removing an erroneous usage of element_type from within lock(). * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc: Add more tests for array types. * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc: Likewise. * testsuite/20_util/shared_ptr/requirements/1.cc: New test. * testsuite/20_util/weak_ptr/requirements/1.cc: New test. 2025-03-13 Patrick Palka PR libstdc++/116440 * include/std/tuple (tuple::tuple(const _Elements&...)) [C++20]: Turn into a template. * testsuite/20_util/tuple/116440.C: New test. 2025-03-13 Jonathan Wakely Tomasz Kamiński PR libstdc++/111055 * include/bits/stl_queue.h (queue(from_range_t, _Rg&&)) (queue(from_range_t, _Rg&&, const _Alloc&), push_range): Define. (priority_queue(from_range_t, R&&, const Compare&)) (push_range): Define. * include/bits/stl_stack.h (stack(from_range_t, R&&)) (stack(from_range_t, R&&, const Alloc&), push_range): Define. * testsuite/util/testsuite_iterators.h (test_range_nocopy): Define. * testsuite/23_containers/priority_queue/cons_from_range.cc: New test. * testsuite/23_containers/priority_queue/members/push_range.cc: New test. * testsuite/23_containers/queue/cons_from_range.cc: New test. * testsuite/23_containers/queue/members/push_range.cc: New test. * testsuite/23_containers/stack/cons_from_range.cc: New test. * testsuite/23_containers/stack/members/push_range.cc: New test. 2025-03-13 Jonathan Wakely * include/Makefile.am: Add stdckdint.h. * include/Makefile.in: Regenerate. * src/c++23/std.compat.cc.in: Export functions. * include/c_compatibility/stdckdint.h: New file. * testsuite/26_numerics/stdckdint/1.cc: New test. * testsuite/26_numerics/stdckdint/2_neg.cc: New test. 2025-03-13 Jonathan Wakely * include/Makefile.am: Add stdbit.h. * include/Makefile.in: Regenerate. * src/c++23/std.compat.cc.in: Export functions. * include/c_compatibility/stdbit.h: New file. * testsuite/20_util/stdbit/1.cc: New test. * testsuite/20_util/stdbit/2_neg.cc: New test. 2025-03-13 Patrick Palka PR libstdc++/119135 * include/std/ranges: Include . (views::__detail::__is_ref_view): Replace with ... (views::__detail::__is_constable_ref_view): ... this. (views::_AsConst::operator()): Replace bogus use of element_type in the ref_view branch. * testsuite/std/ranges/adaptors/as_const/1.cc (test03): Extend test. 2025-03-13 Thomas Schwinge * acinclude.m4 (GLIBCXX_ENABLE_CXX_FLAGS): Append to 'EXTRA_CXX_FLAGS' any additional flags. * configure: Regenerate. * configure.host: Document 'EXTRA_CFLAGS', 'EXTRA_CXX_FLAGS'. 2025-03-13 Tomasz Kamiński PR libstdc++/108053 * include/std/format (basic_format_arg::_M_visit_user): Helper function for wrapping extension types into handle. (visit_format_arg): Call `_M_visit_user` instead of `_M_visit`. (basic_format_arg::visit): As above. (__format::__visit_format_arg): Provides direct access to values stored in basic_format_arg. (__format::__int_from_arg): Use __format::__visit_format_arg instead of std::visit_format_arg. (_Formatting_scanner::_M_format_arg): As above. (_Checking_scanner::__do_vformat_to): As above. * testsuite/std/format/arguments/args.cc: New tests. * testsuite/std/format/string.cc: Test for using __int128 as width/precision. 2025-03-12 Patrick Palka * include/bits/version.def (ranges_to_input): Define. * include/bits/version.h: Regenerate. * include/std/ranges (ranges::to_input_view): Define for C++26. (views::__detail::__can_to_input): Likewise. (views::_ToInput, views::to_input): Likewise. * testsuite/std/ranges/adaptors/to_input/1.cc: New test. 2025-03-12 Jonathan Wakely * include/std/format: Include instead of . 2025-03-12 Jonathan Wakely * include/std/format (basic_format_parse_context::__once): New variable template. (basic_format_parse_context::__valid_types_for_check_dynamic_spec): New function template for checking argument types. (basic_format_parse_context::__check_dynamic_spec): New function template to implement the common check_dynamic_spec logic. (basic_format_parse_context::check_dynamic_spec_integral): Call __check_dynamic_spec instead of check_dynamic_spec. (basic_format_parse_context::check_dynamic_spec_string): Likewise. Use _CharT instead of char_type consistently. (basic_format_parse_context::check_dynamic_spec): Use __valid_types_for_check_dynamic_spec for precondition checks and call __check_dynamic_spec for checking the arg id. * testsuite/std/format/parse_ctx_neg.cc: Adjust expected errors. 2025-03-12 Jonathan Wakely * include/std/future (packaged_task::packaged_task(F&&)): Add static_assert. * testsuite/30_threads/packaged_task/cons/dangling_ref.cc: Add dg-error for new static assertion. * testsuite/30_threads/packaged_task/cons/lwg4154_neg.cc: New test. 2025-03-12 Jonathan Wakely * include/std/chrono (__detail::__get_leap_second_info): Update expiry date for leap seconds list. * src/c++20/tzdata.zi: Import new file from 2025a release. * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds) Update expiry date for leap seconds list. 2025-03-12 Tomasz Kamiński * include/std/format (formatter<_Float16, _CharT>): Define only if _GLIBCXX_FLOAT_IS_IEEE_BINARY32 macro is defined. (formatter<_Float16, _CharT>): As above. (formatter<__gnu_cxx::__bfloat16_t, _CharT>): As above. (formatter<_Float64, _CharT>): Define only if _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 is defined. (basic_format_arg::_S_to_arg_type): Normalize _Float32 and _Float64 only to float and double respectivelly. (basic_format_arg::_S_to_enum): Remove handling of _Float32 and _Float64. 2025-03-12 Jonathan Wakely * doc/xml/manual/strings.xml: Tweak formatting. Add example using lambda. * doc/html/manual/strings.html: Regenerate. 2025-03-12 Jonathan Wakely * include/bits/unique_ptr.h (unique_ptr::operator*): Add static_assert to check for dangling reference, as per LWG 4148. * testsuite/20_util/unique_ptr/lwg4148.cc: New test. 2025-03-12 Jonathan Wakely * include/bits/ranges_util.h (ranges::_detail::__has_arrow): Require operator->() to be valid on const-qualified type, as per LWG 4112. * testsuite/std/ranges/adaptors/lwg4112.cc: New test. 2025-03-12 Jonathan Wakely * include/std/format (basic_format_parse_context::check_dynamic_spec): Require a non-empty parameter pack, as per LWG 4142. * testsuite/std/format/parse_ctx.cc: Remove call of check_dynamic_spec with empty template argument list. * testsuite/std/format/parse_ctx_neg.cc: Add dg-error to call of check_dynamic_spec with empty template argument list. 2025-03-08 Giuseppe D'Angelo * include/bits/version.def (atomic_value_initialization): Guard the FTM with the language concepts FTM. * include/bits/version.h: Regenerate. * include/std/atomic (atomic): When atomic value init is defined, change the defaulted default constructor to a non-defaulted one, constraining it as per LWG4169. Otherwise, keep the existing constructor. Remove the NSDMI for the _M_i member. (_GLIBCXX20_INIT): Drop the macro, as it is not needed any more. * testsuite/29_atomics/atomic/69301.cc: Test that an atomic wrapping a non-default-constructible type is always itself non-default-constructible (in all language modes). * testsuite/29_atomics/atomic/cons/trivial.cc: New test. 2025-03-08 Jonathan Wakely * include/bits/stl_algobase.h (__nothrow_contiguous_iterator): Remove. (__memcpyable_iterators): Simplify. (__copy_move_a2, __copy_n_a, __copy_move_backward_a2): Call std::to_address on the iterators after advancing them. * testsuite/25_algorithms/copy/contiguous.cc: New test. * testsuite/25_algorithms/copy_backward/contiguous.cc: New test. * testsuite/25_algorithms/copy_n/contiguous.cc: New test. 2025-03-07 Jonathan Wakely * include/std/forward_list (erase): Change lambda to have explicit return type and const parameter type. * include/std/list (erase): Likewise. * testsuite/23_containers/forward_list/erasure.cc: Check lambda is correct. * testsuite/23_containers/list/erasure.cc: Likewise. 2025-03-07 Jonathan Wakely * include/bits/chrono_io.h (chrono::__detail::from_stream): Add deleted function as poison pill for unqualified lookup. 2025-03-07 Jonathan Wakely * include/std/expected (expected::value()&&): Add missing static_assert for LWG 3940. * testsuite/20_util/expected/lwg3843.cc: New test. 2025-03-06 Jonathan Wakely * include/bits/unique_lock.h (unique_lock::operator=): Fix for self-move-assignment. * include/std/shared_mutex (shared_lock::operator=): Add comment. * testsuite/30_threads/shared_lock/cons/lwg4172.cc: New test. * testsuite/30_threads/unique_lock/cons/lwg4172.cc: New test. 2025-03-06 Jonathan Wakely * include/bits/stl_list.h (list::pop_front, list::pop_back): Add non-empty assertions. 2025-03-06 Jonathan Wakely * include/bits/ranges_util.h: Include . 2025-03-06 Jonathan Wakely * include/std/span (span::~span): Remove, as per LWG 3903. 2025-03-06 Jonathan Wakely PR libstdc++/119144 * testsuite/26_numerics/complex/tuple_like.cc: Include , replace std::string with std::string_view, instantiate tests for long instead of size_t. 2025-03-06 Jonathan Wakely Thomas Schwinge * src/c++20/tzdb.cc [__GTHREADS && !__GTHREADS_CXX0X]: Use '__gnu_cxx::__mutex'. 2025-03-06 Thomas Schwinge * src/c++20/format.cc (conv): Tag 'out' as '[[maybe_unused]]'. 2025-03-06 Thomas Schwinge * src/c++17/fs_dir.cc (do_unlink): Tag 'is_directory' as '[[maybe_unused]]'. 2025-03-06 Thomas Schwinge * src/filesystem/dir-common.h (openat): Tag 'nofollow' as '[[maybe_unused]]'. 2025-03-06 Thomas Schwinge Jonathan Wakely * include/bits/c++config [!__cpp_exceptions] (_GLIBCXX_THROW_OR_ABORT): Reference '_EXC'. 2025-03-06 Jonathan Wakely * testsuite/20_util/specialized_algorithms/uninitialized_copy/constexpr.cc: Do not test COW std::string in constexpr contexts. * testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constexpr.cc: Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_fill/constexpr.cc: Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_move/constexpr.cc: Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constexpr.cc: Likewise. 2025-03-06 Giuseppe D'Angelo PR libstdc++/113310 * include/bits/stl_pair.h (get): Forward-declare std::get for std::complex. * include/bits/version.def (tuple_like): Bump the value of the feature-testing macro in C++26. * include/bits/version.h: Regenerate. * include/std/complex: Implement the tuple protocol for std::complex. (tuple_size): Specialize for std::complex. (tuple_element): Ditto. (__is_tuple_like_v): Ditto. (complex): Add a private getter to obtain references to the real and the imaginary part, on the primary class template and on its specializations. (get): Add overloads of std::get for std::complex. * testsuite/20_util/tuple/tuple_like_ftm.cc: New test. * testsuite/26_numerics/complex/tuple_like.cc: New test. 2025-03-05 Jonathan Wakely * include/std/ranges (enumerate_view::_Iterator::operator-): Add noexcept, as per LWG 3912. * testsuite/std/ranges/adaptors/enumerate/1.cc: Check iterator difference is noexcept. 2025-03-05 yxj-github-437 <2457369732@qq.com> * src/c++23/std-clib.cc.in (timespec): Move within preprocessor group guarded by _GLIBCXX_HAVE_TIMESPEC_GET. 2025-03-05 Jonathan Wakely PR libstdc++/119110 * testsuite/25_algorithms/move/constrained.cc: Move test06 function to ... * testsuite/25_algorithms/move/105609.cc: New test. * testsuite/25_algorithms/move_backward/constrained.cc: Move test04 function to ... * testsuite/25_algorithms/move_backward/105609.cc: New test. 2025-03-05 Patrick Palka * include/bits/version.def (ranges_cache_latest): Define. * include/bits/version.h: Regenerate. * include/std/ranges (__detail::__non_propagating_cache::_M_reset): Export from base class _Optional_base. (cache_latest_view): Define for C++26. (cache_latest_view::_Iterator): Likewise. (cache_latest_view::_Sentinel): Likewise. (views::__detail::__can_cache_latest): Likewise. (views::_CacheLatest, views::cache_latest): Likewise. * testsuite/std/ranges/adaptors/cache_latest/1.cc: New test. 2025-03-05 Giuseppe D'Angelo * include/bits/stl_algo.h (__stable_sort): Use if consteval instead of is_constant_evaluated. 2025-03-05 Patrick Palka PR libstdc++/115215 PR libstdc++/115218 * include/std/ranges (concat_view::iterator::_S_invoke_with_runtime_index): Use __builtin_unreachable in recursive lambda to certify it always exits via 'return'. (concat_view::iterator::iterator): In the const-converting constructor, direct initialize _M_it. (views::_Concat::operator()): Adjust constraints in the single-argument case as per LWG 4082. * testsuite/std/ranges/concat/1.cc (test01): Call it at runtime too. (test04): New test. 2025-03-05 Tomasz Kamiński PR libstdc++/119121 * include/bits/ranges_util.h (__detail::__pair_like_convertible_from): Use `_Tp` in `is_reference_v` check * testsuite/std/ranges/subrange/tuple_like.cc: New tests for pair-like conversion 2025-03-05 Giuseppe D'Angelo * include/bits/ranges_uninitialized.h: Mark the specialized memory algorithms as constexpr in C++26. Also mark the members of the _DestroyGuard helper class. * include/bits/stl_uninitialized.h: Ditto. * include/bits/stl_construct.h: (_Construct_novalue) Mark it as constexpr in C++26. * include/bits/version.def (raw_memory_algorithms): Bump the feature-testing macro for C++26. * include/bits/version.h: Regenerate. * testsuite/20_util/headers/memory/synopsis.cc: Add constexpr to the uninitialized_* algorithms (when in C++26) in the test. * testsuite/20_util/specialized_algorithms/feature_test_macro.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_copy/constexpr.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constexpr.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_fill/constexpr.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_move/constexpr.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constexpr.cc: New test. 2025-03-04 Jonathan Wakely * doc/xml/manual/test.xml: Remove stray comma. * doc/html/manual/test.html: Regenerate. 2025-02-28 Jonathan Wakely PR libstdc++/106612 * include/bits/iterator_concepts.h (_IterMove::__iter_ref_t): New alias template. (_IterMove::__result): Use __iter_ref_t instead of std::iter_reference_t. (_IterMove::__type): Remove incorrect __dereferenceable constraint. (_IterMove::operator()): Likewise. Add correct constraints. Use __iter_ref_t instead of std::iter_reference_t. Forward parameter as correct value category. (iter_swap): Add comments. * testsuite/24_iterators/customization_points/iter_move.cc: Test that iter_move is found by ADL and that rvalue arguments are handled correctly. 2025-02-28 Jonathan Wakely PR libstdc++/105609 * include/bits/ranges_algobase.h (__detail::__assign_one): New helper function. (__copy_or_move, __copy_or_move_backward): Use new function instead of std::__assign_one. * testsuite/25_algorithms/move/constrained.cc: Check that ADL iter_move is used in preference to std::move. * testsuite/25_algorithms/move_backward/constrained.cc: Likewise. 2025-02-28 Jonathan Wakely PR libstdc++/112803 * include/std/ranges (ranges::to): Add static assertions to enforce Mandates conditions. * testsuite/std/ranges/conv/112803.cc: New test. 2025-02-28 Patrick Palka PR libstdc++/104606 * include/std/optional (operator<=>): Revert r14-9771 change. Add constraint checking the validity of the return type compare_three_way_result_t before the three_way_comparable_with constraint. 2025-02-28 Patrick Palka PR libstdc++/112490 * include/bits/stl_iterator.h (basic_const_iterator::operator<): Replace non-dependent basic_const_iterator function parameter with a dependent one of type basic_const_iterator<_It3> where _It3 matches _It. (basic_const_iterator::operator>): Likewise. (basic_const_iterator::operator<=): Likewise. (basic_const_iterator::operator>=): Likewise. * testsuite/24_iterators/const_iterator/112490.cc: New test. 2025-02-27 Jonathan Wakely * include/std/stacktrace (_Impl::_M_allocate): Fix outdated comment. 2025-02-26 Patrick Palka PR libstdc++/118083 * include/bits/ranges_base.h (ranges::__access::__possibly_const_range): Mention LWG 4027. 2025-02-25 Giuseppe D'Angelo * include/bits/algorithmfwd.h (stable_sort): Add constexpr. * include/bits/ranges_algo.h (__stable_sort_fn): Add constexpr to the function call operators. * include/bits/stl_algo.h (__stable_sort): Add constexpr. During constant evaluation, always use the non-allocating path. (stable_sort): Add constexpr. (__inplace_stable_sort): Likewise. (__merge_without_buffer): Likewise. * include/bits/version.def (constexpr_algorithms): Bump value for C++26. * include/bits/version.h: Regnerate. * testsuite/25_algorithms/cpp_lib_constexpr.cc: Test the bumped feature-testing macro. * testsuite/25_algorithms/headers/algorithm/synopsis.cc: Adapt the test to constexpr stable_sort. * testsuite/25_algorithms/stable_sort/constexpr.cc: New test. 2025-02-25 Giuseppe D'Angelo * include/bits/c++config (_GLIBCXX26_CONSTEXPR): New macro. 2025-02-25 Jonathan Wakely PR libstdc++/93059 * include/bits/stl_algobase.h (__fill_a1): Fix typo in SFINAE constraint. 2025-02-25 François Dumont * include/bits/hashtable_policy.h (_Hash_code_base::_M_copy_code, _Hash_code_base::_M_store_code): Remove. * include/bits/hashtable.h (_M_hash_code_ext): New. (_M_merge_multi(_Hashtable&)): Use latter. (_M_copy_code): New. (_M_assign): Use latter. (_M_bucket_index_ex): New. (_M_equals): Use latter. (_M_store_code): New. (_M_src_hash_code): Remove key_type parameter. * testsuite/23_containers/unordered_map/modifiers/merge.cc (test10): New test case. 2025-02-25 Patrick Palka PR libstdc++/118083 * include/bits/ranges_base.h (ranges::__access::__possibly_const_range): Adjust logic as per LWG 4027. Add missing input_range constraint. * testsuite/std/ranges/access/cbegin.cc (test05): Verify LWG 4027 testcases. * testsuite/std/ranges/access/cdata.cc: Adjust, simplify and consolidate some tests after the above. * testsuite/std/ranges/access/cend.cc: Likewise. * testsuite/std/ranges/access/crbegin.cc: Likewise. * testsuite/std/ranges/access/crend.cc: Likewise. * testsuite/std/ranges/adaptors/join.cc: Likewise. * testsuite/std/ranges/adaptors/take_while.cc: Likewise. * testsuite/std/ranges/adaptors/transform.cc: Likewise. 2025-02-22 Jonathan Wakely PR c++/118981 * src/c++20/tzdb.cc: Use init_priority(98) instead of init_priority(99). 2025-02-22 Thomas Schwinge * testsuite/lib/prune.exp (proc libstdc++-dg-prune): Turn 'sorry, unimplemented: dynamic stack allocation not supported' into UNSUPPORTED. 2025-02-22 Jonathan Wakely * include/bits/atomic_base.h (__atomic_base<_ITp>): Remove misleading comment. 2025-02-22 Jonathan Wakely * src/c++17/floating_from_chars.cc (__floating_from_chars_hex): Remove redundant cast. 2025-02-20 Jonathan Wakely PR libstdc++/118559 * include/std/type_traits (rank, rank_v): Do not use __array_rank for Clang 19 and older. 2025-02-20 Jonathan Wakely * include/bits/c++config (_GLIBCXX_HAS_BUILTIN): Add parentheses. 2025-02-20 Jonathan Wakely PR libstdc++/118855 * include/std/bit (__count_lzero, __count_rzero, __popcount): Use type-generic built-ins when available. 2025-02-20 Jonathan Wakely * include/experimental/bits/simd.h (__find_next_valid_abi): Cast __bit_ceil argument to unsigned. * src/c++17/floating_from_chars.cc (__floating_from_chars_hex): Cast __bit_ceil argument to unsigned. * src/c++17/memory_resource.cc (big_block): Cast __bit_width argument to unsigned. 2025-02-20 Jonathan Wakely * src/c++17/memory_resource.cc (default_res): Define here instead of including default_resource.h. * src/c++98/globals_io.cc (__ioinit): Define here instead of including ios_base_init.h. * src/c++17/default_resource.h: Removed. * src/c++98/ios_base_init.h: Removed. 2025-02-20 Jonathan Wakely PR libstdc++/118811 * src/c++20/tzdb.cc (tzdb_list::_Node): Use init_priority attribute on static data members. * testsuite/std/time/tzdb_list/pr118811.cc: New test. 2025-02-20 Patrick Palka * include/std/ranges (concat_view::iterator): Rename to ... (concat_view::_Iterator): ... this throughout. 2025-02-20 Patrick Palka PR libstdc++/115209 * include/bits/version.def (ranges_concat): Depend on __cpp_pack_indexing. * include/bits/version.h: Regenerate. * include/std/ranges (__detail::__last_is_common): Remove. (__detail::__all_but_first_sized): New. (concat_view::end): Use C++26 pack indexing instead of __last_is_common as per R8 of P2542. (concat_view::iterator::operator-): Update constraints on iter/sent overloads as per R8 of P2542. 2025-02-15 Jonathan Wakely * include/bits/shared_ptr_base.h: Do not include . 2025-02-15 Jonathan Wakely PR libstdc++/100612 * include/std/thread (__pmf_expects_stop_token): Constrain variable template specialization with concept. Add comment. 2025-02-15 Jonathan Wakely * include/bits/range_access.h (rbegin, rend, crbegin, crend): Add conditional noexcept, as per P3623R0. * testsuite/24_iterators/headers/iterator/range_access.cc: Add noexcept-specifier to rbegin, rend, crbegin and crend declarations. 2025-02-15 Jonathan Wakely * testsuite/24_iterators/headers/iterator/range_access_c++11.cc: Removed. * testsuite/24_iterators/headers/iterator/range_access_c++14.cc: Removed. * testsuite/24_iterators/headers/iterator/range_access_c++17.cc: Removed. * testsuite/24_iterators/headers/iterator/range_access.cc: New test. 2025-02-14 Andrew Pinski PR libstdc++/118865 * include/bits/stl_list.h (_M_initialize_dispatch): Add an unreachable if the iterator was not empty that the list will now be not empty. 2025-02-14 Jonathan Wakely * include/parallel/algobase.h (__mismatch_switch): Qualify calls to make_pair to avoid ADL. 2025-02-14 Jonathan Wakely * include/bits/stl_tree.h (_Rb_tree::_M_equal_range): Replace unqualified call to make_pair with explicit construction of std::pair. * testsuite/23_containers/set/operations/equal_range_adl.cc: New test. 2025-02-14 Matthew Malcomson Jonathan Wakely * include/bits/atomic_base.h (__atomic_fetch_addable): Define new concept. (__atomic_impl::__fetch_add_flt): Use new concept to make use of __atomic_fetch_add when available. (__atomic_fetch_subtractable, __fetch_sub_flt): Likewise. (__atomic_add_fetchable, __add_fetch_flt): Likewise. (__atomic_sub_fetchable, __sub_fetch_flt): Likewise. 2025-02-08 Thomas Schwinge * testsuite/lib/prune.exp (libstdc++-dg-prune): Turn 'sorry, unimplemented: exception handling not supported' into UNSUPPORTED. 2025-02-08 Thomas Schwinge * testsuite/lib/prune.exp (libstdc++-dg-prune): Clarify effective-target 'exceptions_enabled'. 2025-02-07 Giuseppe D'Angelo PR libstdc++/118160 PR libstdc++/100249 * include/bits/ranges_algo.h (__is_permutation_fn): Avoid a dangling reference by storing the result of the iterator dereference and the result of the projection in two distinct variables, in order to lifetime-extend each one. Forward the projected value to the predicate. * testsuite/25_algorithms/is_permutation/constrained.cc: Add a test with a range returning prvalues. Test it in a constexpr context, in order to rely on the compiler to catch UB. 2025-02-07 Jonathan Wakely * include/bits/ostream.h (basic_ostream::_Disable_exceptions): RAII helper type. (basic_ostream::sentry::~sentry): Use _Disable_exceptions. Add try-catch block around call to pubsync. * testsuite/27_io/basic_ostream/exceptions/char/lwg4188.cc: New test. * testsuite/27_io/basic_ostream/exceptions/wchar_t/lwg4188.cc: New test. 2025-02-07 Jonathan Wakely PR libstdc++/111050 * include/bits/hashtable_policy.h (_Hash_node_value_base): Add comment about always_inline attributes. 2025-02-05 Rainer Orth Jonathan Wakely PR libstdc++/118701 * config/abi/pre/gnu.ver (CXXABI_1.3.16): Move __riscv guard around version. * scripts/extract_symvers.pl: Allow for weak versions. * testsuite/util/testsuite_abi.cc (check_version): Wrap CXXABI_1.3.16 in __riscv. 2025-01-31 Patrick Palka PR libstdc++/118156 * include/std/flat_map (_Flat_map_impl::_M_insert): Generalized version of insert taking heterogenous iterator/sentinel pair. (_Flat_map_impl::insert): Dispatch to _M_insert. (_Flat_map_impl::insert_range): Likewise. (flat_map): Export _Flat_map_impl::insert_range. (flat_multimap): Likewise. * include/std/flat_set (_Flat_set_impl::insert_range): Reimplement directly, not in terms of insert. (flat_set): Export _Flat_set_impl::insert_range. (flat_multiset): Likewise. * testsuite/23_containers/flat_map/1.cc (test06): New test. * testsuite/23_containers/flat_multimap/1.cc (test06): New test. * testsuite/23_containers/flat_multiset/1.cc (test06): New test. * testsuite/23_containers/flat_set/1.cc (test06): New test. 2025-01-31 Patrick Palka * include/bits/stl_bvector.h (vector::insert_range): Consistently return an iterator pointing to the first element inserted. * include/bits/vector.tcc (vector::insert_range): Likewise. * testsuite/23_containers/vector/bool/modifiers/insert/insert_range.cc: Verify insert_range return values. * testsuite/23_containers/vector/modifiers/insert/insert_range.cc: Likewise. 2025-01-30 Jonathan Wakely PR libstdc++/98749 * include/std/latch (latch::max()): Ensure the return value is representable as the return type. (latch::latch(ptrdiff_t)): Add assertion. (latch::count_down): Fix copy & pasted duplicate assertion. Use std::cmp_equal to compare __platform_wait_t and ptrdiff_t values. (latch::_M_a): Use defined constant for alignment. * testsuite/30_threads/latch/1.cc: Check max(). Check constant initialization works for values in the valid range. Check alignment. 2025-01-29 Patrick Palka PR libstdc++/118413 * include/std/ranges (views::__adaptor::_Partial): Adjust constraints on the "simple" partial specializations to require is_trivially_copy_constructible_v instead of is_trivially_copyable_v. * testsuite/std/ranges/adaptors/adjacent_transform/1.cc (test04): Extend P2494R2 test. * testsuite/std/ranges/adaptors/transform.cc (test09): Likewise. 2025-01-27 Andreas Schwab PR libstdc++/118563 * testsuite/util/testsuite_abi.cc (check_version): Add CXXABI_1.3.16. * config/abi/pre/gnu.ver (CXXABI_1.3.14) [__riscv]: Exclude typeinfo for bfloat16_t. (CXXABI_1.3.16) [__riscv]: Add it here. 2025-01-23 Jan Hubicka PR target/80813 * include/bits/stl_bvector.h (vector::operator []): Do not use iterators. 2025-01-20 Giuseppe D'Angelo PR libstdc++/118185 PR libstdc++/100249 * include/bits/ranges_algo.h (__clamp_fn): Correctly forward the projected value to the comparator. * testsuite/25_algorithms/clamp/118185.cc: New test. 2025-01-16 Jonathan Wakely PR libstdc++/99995 * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/bits/unique_ptr.h: Include bits/ostream.h instead of ostream. * include/std/ostream: Include new header. * include/bits/ostream.h: New file. 2025-01-16 Jonathan Wakely PR libstdc++/118158 * src/c++17/fs_ops.cc (fs::equivalent): Remove error reporting for is_other(s1) && is_other(s2) case, as per LWG 2937. * testsuite/27_io/filesystem/operations/pr118158.cc: New test. 2025-01-16 Jonathan Wakely * include/bits/stl_map.h: Check __glibcxx_node_extract instead of __cplusplus. * include/bits/stl_multimap.h: Likewise. * include/bits/stl_multiset.h: Likewise. * include/bits/stl_set.h: Likewise. * include/bits/stl_tree.h: Likewise. 2025-01-15 Jonathan Wakely * testsuite/27_io/ios_base/types/openmode/case_label.cc: Use standard feature test macro not internal one. 2025-01-15 Jonathan Wakely * testsuite/23_containers/set/requirements/explicit_instantiation/alloc_ptr.cc: Guard node extraction checks with feature test macro. Remove calls to non-existent range members. * testsuite/23_containers/forward_list/requirements/explicit_instantiation/alloc_ptr.cc: Use standard macro not internal one. * testsuite/23_containers/list/requirements/explicit_instantiation/alloc_ptr.cc: Likewise. 2025-01-15 Jonathan Wakely PR libstdc++/109849 * include/bits/vector.tcc (vector::_M_range_insert): Fix reversed args in length calculation. 2025-01-15 Jonathan Wakely * testsuite/28_regex/traits/char/transform_primary.cc: Fix subclause numbering in references to the standard. 2025-01-15 Jakub Jelinek PR c++/118387 * testsuite/25_algorithms/default_template_value.cc (Input::operator<=>): Use auto as return type rather than bool. 2025-01-12 Torbjörn SVENSSON * testsuite/27_io/print/1.cc: Allow both LF and CRLF in test. * testsuite/27_io/print/3.cc: Likewise. 2025-01-12 Torbjörn SVENSSON * testsuite/29_atomics/atomic_float/compare_exchange_padding.cc: Use effective-target libatomic_available. 2025-01-10 Jonathan Wakely * include/bits/atomic_futex.h (__atomic_futex_unsigned): Remove names of unused parameters in non-futex implementation. 2025-01-08 Jonathan Wakely * include/bits/move.h (__addressof, forward, forward_like, move) (move_if_noexcept, addressof): Add always_inline attribute. Replace _GLIBCXX_NODISCARD with [[__nodiscard__]]. 2025-01-08 Jonathan Wakely PR libstdc++/118260 * python/hook.in: Run 'skip' commands for some simple accessor functions. 2025-01-08 Nicolas Werner PR libstdc++/106852 * src/c++23/std.cc.in (to_underlying): Add. 2025-01-08 Jonathan Wakely PR libstdc++/118177 * src/c++23/std-clib.cc.in: Use preprocessor conditions for names which are not always defined. * src/c++23/std.cc.in: Likewise. 2025-01-08 Jonathan Wakely * include/std/span: Fix indentation. 2025-01-08 Giuseppe D'Angelo * include/bits/version.def: Add the new feature-testing macro. * include/bits/version.h: Regenerate. * include/std/span: Add constructor from initializer_list. * testsuite/23_containers/span/init_list_cons.cc: New test. * testsuite/23_containers/span/init_list_cons_neg.cc: New test. 2025-01-08 Jonathan Wakely * include/std/span (__detail::__extent_storage): Check precondition in constructor. Add consteval constructor for valid lengths and deleted constructor for invalid constant lengths. Make member functions always_inline. (__detail::__span_ptr): New class template. (span): Adjust constructors to use a std::integral_constant value for constant lengths. Declare all specializations of std::span as friends. (span::first, span::last, span::subspan): Use new private constructor. (span(__span_ptr)): New private constructor for constant lengths. 2025-01-08 Jonathan Wakely PR libstdc++/85824 PR libstdc++/94409 PR libstdc++/98723 PR libstdc++/118105 * include/bits/locale_classes.tcc (collate::do_transform): Check errno after calling _M_transform. Use RAII type to manage the buffer and to restore errno. * include/bits/regex.h (regex_traits::transform_primary): Handle exceptions from std::collate::transform and do not try to use std::collate for user-defined facets. 2025-01-08 Jonathan Wakely PR libstdc++/118093 * include/bits/atomic_futex.h (_M_load_and_test_until_impl): Return false for times before the epoch. * src/c++11/futex.cc (_M_futex_wait_until): Extend check for negative times to check for subsecond times. Add unlikely attribute. (_M_futex_wait_until_steady): Likewise. * testsuite/30_threads/future/members/118093.cc: New test. 2025-01-08 Jonathan Wakely PR libstdc++/90389 * include/bits/deque.tcc (_M_insert_aux): Rename variadic overload to _M_emplace_aux. * include/bits/stl_deque.h (_M_insert_aux): Define inline. (_M_emplace_aux): Declare. * testsuite/23_containers/deque/modifiers/emplace/90389.cc: New test. 2025-01-08 Jonathan Wakely * include/bits/move.h (forward, move, move_if_noexcept, addressof): Add @since to Doxygen comments. (forward_like): Add Doxygen comment. 2025-01-08 Jonathan Wakely * doc/xml/manual/evolution.xml: Replace invalid elements with . * doc/html/*: Regenerate. 2025-01-01 Gerald Pfeifer * doc/html/manual/profile_mode.html: Delete. * doc/html/manual/profile_mode_api.html: Ditto. * doc/html/manual/profile_mode_cost_model.html: Ditto. * doc/html/manual/profile_mode_design.html: Ditto. * doc/html/manual/profile_mode_devel.html: Ditto. * doc/html/manual/profile_mode_impl.html: Ditto. Copyright (C) 2025 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.