Daily bump.
[official-gcc.git] / libstdc++-v3 / ChangeLog
bloba0889503cfc47157ddc0342254d53637232de9a0
1 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
3         PR libstdc++/113806
4         * include/std/bitset (bitset::operator>>=): Remove redundant
5         call to _M_do_sanitize.
7 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
9         PR libstdc++/113807
10         * include/std/bitset (bitset::set()): Use memset instead of a
11         loop over the individual words.
13 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
15         PR libstdc++/113811
16         * include/bits/stl_algo.h (__rotate): Use unsigned values for
17         division.
19 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
21         PR libstdc++/99117
22         * include/std/valarray (valarray::operator=(const _Expr&)):
23         Use loop to copy instead of __valarray_copy with _Array.
24         * testsuite/26_numerics/valarray/99117.cc: New test.
26 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
28         * src/c++20/tzdata.zi: Import new file from 2024a release.
29         * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds)
30         Update expiry date for leap seconds list.
32 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
34         PR libstdc++/87744
35         * include/bits/random.h [!__SIZEOF_INT128__] (_Select_uint_least_t):
36         Define specialization for 64-bit generators with
37         non-power-of-two modulus and large constants.
38         (__mod): Use if constexpr unconditionally.
39         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
40         line number.
41         * testsuite/26_numerics/random/linear_congruential_engine/87744.cc:
42         New test.
44 2024-02-14  Gerald Pfeifer  <gerald@pfeifer.com>
46         * doc/xml/manual/status_cxx2023.xml: Fix C++ item p2442 to be
47         version 1.
48         * doc/html/manual/status.html: Regenerate.
50 2024-02-12  Paul Keir  <paul.keir@uws.ac.uk>
52         PR libstdc++/113294
53         * include/bits/basic_string.h (basic_string::operator=): Use
54         _M_use_local_data() instead of _M_local_buf on the moved-from
55         string.
56         * testsuite/21_strings/basic_string/modifiers/constexpr.cc
57         (test_move): New test.
59 2024-02-09  Ken Matsui  <kmatsui@gcc.gnu.org>
61         * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_SAME):
62         Removed.
63         * include/std/type_traits (is_same): Use
64         _GLIBCXX_USE_BUILTIN_TRAIT instead of
65         _GLIBCXX_HAVE_BUILTIN_IS_SAME.
66         (is_same_v): Likewise.
68 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
70         * include/bits/shared_ptr_atomic.h: Fix typo in comment.
72 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
74         PR libstdc++/100147
75         * include/bits/gslice.h (operator=): Add comment about lack of
76         self-assignment check.
78 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
80         * include/tr2/type_traits (bases, direct_bases): Use
81         __has_builtin to check if required built-ins are supported.
83 2024-02-07  Patrick Palka  <ppalka@redhat.com>
85         PR testsuite/113710
86         PR c++/113814
87         * include/bits/stl_pair.h (tuple_element): Add forward
88         declaration of the partial specialization for tuple.
90 2024-02-06  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
92         * testsuite/lib/libstdc++.exp: Use "nul" for Windows, "/dev/null"
93         for other environments.
95 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
97         * include/std/format (__format::_Spec::_M_reserved): Define new
98         bit-field members to reserve padding bits for future extensions.
100 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
102         * src/experimental/Makefile.am: Use libstdc++fsconvenience.a
103         instead of libstdc++fs.a.
104         * src/experimental/Makefile.in: Regenerate.
105         * src/filesystem/Makefile.am: Build libstdc++fsconvenience.a as
106         well.
107         * src/filesystem/Makefile.in: Regenerate.
109 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
111         * include/bits/text_encoding-data.h: Regenerate.
112         * include/bits/unicode-data.h: Regenerate.
113         * scripts/gen_text_encoding_data.py: Add copyright and license
114         text to the output.
116 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
118         PR libstdc++/113335
119         * include/bits/std_function.h (__function_guide_helper): Add
120         partial specialization for explicit object member functions, as
121         per LWG 3617.
122         * testsuite/20_util/function/cons/deduction_c++23.cc: Check
123         explicit object member functions.
124         * testsuite/30_threads/packaged_task/cons/deduction_c++23.cc:
125         Likewise.
127 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
129         * testsuite/17_intro/names.cc [_AIX]: Undefine "u".
131 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
133         * include/experimental/internet (network_v6::network): Define.
134         (network_v6::hosts): Finish implementing.
135         (network_v6::to_string): Do not concatenate std::string to
136         arbitrary std::basic_string specialization.
137         * testsuite/experimental/net/internet/network/v6/cons.cc: New
138         test.
140 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
142         PR libstdc++/90276
143         * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Fix
144         comparison function to use less-than instead of equality.
146 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
148         PR libstdc++/90276
149         * testsuite/util/pstl/test_utils.h (reverse_invoker): Do not use
150         perfect forwarding for iterator arguments.
152 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
154         * include/std/string_view (basic_string_view(R&&)): Remove
155         constraint that traits_type must be the same, as per LWG 3857.
156         * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc:
157         Explicit conversion between different specializations should be
158         allowed.
159         * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc:
160         Likewise.
162 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
164         * include/std/syncstream (basic_osyncstream::operator=): Remove
165         noexcept, as per LWG 3867.
167 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
169         * include/std/generator (promise_type::yield_value): Remove
170         noexcept from fourth overload, as per LWG 3894.
172 2024-02-01  Patrick Palka  <ppalka@redhat.com>
174         PR libstdc++/113309
175         PR libstdc++/109203
176         * include/bits/ranges_util.h (__detail::__pair_like): Don't
177         define in C++23 mode.
178         (__detail::__pair_like_convertible_from): Adjust as per P2165R4.
179         (__detail::__is_subrange<subrange>): Moved from <ranges>.
180         (__detail::__is_tuple_like_v<subrange>): Likewise.
181         * include/bits/stl_iterator.h: Include <bits/utility.h> for
182         C++23.
183         (__different_from): Move to <concepts>.
184         (__iter_key_t): Adjust for C++23 as per P2165R4.
185         (__iter_val_t): Likewise.
186         * include/bits/stl_pair.h (pair, array): Forward declare.
187         (get): Forward declare all overloads relevant to P2165R4
188         tuple-like constructors.
189         (__is_tuple_v): Define for C++23.
190         (__is_tuple_like_v): Define for C++23.
191         (__tuple_like): Define for C++23 as per P2165R4.
192         (__pair_like): Define for C++23 as per P2165R4.
193         (__eligibile_tuple_like): Define for C++23.
194         (__eligibile_pair_like): Define for C++23.
195         (pair::_S_constructible_from_pair_like): Define for C++23.
196         (pair::_S_convertible_from_pair_like): Define for C++23.
197         (pair::_S_dangles_from_pair_like): Define for C++23.
198         (pair::pair): Define overloads taking a tuple-like type for
199         C++23 as per P2165R4.
200         (pair::_S_assignable_from_tuple_like): Define for C++23.
201         (pair::_S_const_assignable_from_tuple_like): Define for C++23.
202         (pair::operator=): Define overloads taking a tuple-like type for
203         C++23 as per P2165R4.
204         * include/bits/utility.h (ranges::__detail::__is_subrange):
205         Moved from <ranges>.
206         * include/bits/version.def (tuple_like): Define for C++23.
207         * include/bits/version.h: Regenerate.
208         * include/std/concepts (__different_from): Moved from
209         <bits/stl_iterator.h>.
210         (ranges::__swap::__adl_swap): Clarify which __detail namespace.
211         * include/std/map (__cpp_lib_tuple_like): Define C++23.
212         * include/std/ranges (__detail::__is_subrange): Moved to
213         <bits/utility.h>.
214         (__detail::__is_subrange<subrange>): Moved to <bits/ranges_util.h>
215         (__detail::__has_tuple_element): Adjust for C++23 as per P2165R4.
216         (__detail::__tuple_or_pair): Remove as per P2165R4.  Replace all
217         uses with plain tuple as per P2165R4.
218         * include/std/tuple (__cpp_lib_tuple_like): Define for C++23.
219         (__tuple_like_tag_t): Define for C++23.
220         (__tuple_cmp): Forward declare for C++23.
221         (_Tuple_impl::_Tuple_impl): Define overloads taking
222         __tuple_like_tag_t and a tuple-like type for C++23.
223         (_Tuple_impl::_M_assign): Likewise.
224         (tuple::__constructible_from_tuple_like): Define for C++23.
225         (tuple::__convertible_from_tuple_like): Define for C++23.
226         (tuple::__dangles_from_tuple_like): Define for C++23.
227         (tuple::tuple): Define overloads taking a tuple-like type for
228         C++23 as per P2165R4.
229         (tuple::__assignable_from_tuple_like): Define for C++23.
230         (tuple::__const_assignable_from_tuple_like): Define for C++23.
231         (tuple::operator=): Define overloads taking a tuple-like type
232         for C++23 as per P2165R4.
233         (tuple::__tuple_like_common_comparison_category): Define for C++23.
234         (tuple::operator<=>): Define overload taking a tuple-like type
235         for C++23 as per P2165R4.
236         (array, get): Forward declarations moved to <bits/stl_pair.h>.
237         (tuple_cat): Constrain with __tuple_like for C++23 as per P2165R4.
238         (apply): Likewise.
239         (make_from_tuple): Likewise.
240         (__tuple_like_common_reference): Define for C++23.
241         (basic_common_reference): Adjust as per P2165R4.
242         (__tuple_like_common_type): Define for C++23.
243         (common_type): Adjust as per P2165R4.
244         * include/std/unordered_map (__cpp_lib_tuple_like): Define for
245         C++23.
246         * include/std/utility (__cpp_lib_tuple_like): Define for C++23.
247         * testsuite/std/ranges/zip/1.cc (test01): Adjust to handle pair
248         and 2-tuple interchangeably.
249         (test05): New test.
250         * testsuite/20_util/pair/p2165r4.cc: New test.
251         * testsuite/20_util/tuple/p2165r4.cc: New test.
253 2024-02-01  Patrick Palka  <ppalka@redhat.com>
255         * include/bits/stl_pair.h (pair::_S_const_assignable): Define,
256         factored out from ...
257         (pair::operator=): ... the constraints of the const overloads.
259 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
261         * include/bits/version.tpl: Do not use def-file-line for each
262         macro being defined.
263         * include/bits/version.h: Regenerate.
265 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
267         * testsuite/25_algorithms/copy/debug/constexpr_neg.cc: Adjust
268         dg-error pattern.
269         * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc:
270         Likewise.
271         * testsuite/25_algorithms/equal/debug/constexpr_neg.cc:
272         Likewise.
273         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc:
274         Likewise.
275         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc:
276         Likewise.
277         * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc:
278         Likewise.
279         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc:
280         Likewise.
281         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc:
282         Likewise.
283         * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc:
284         Likewise.
286 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
288         * include/experimental/internet (network_v4::to_string()):
289         Remove lambda and use of resize_and_overwrite.
291 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
293         * acinclude.m4 (GLIBCXX_CHECK_TEXT_ENCODING): Use <xlocale.h> if
294         needed for newlocale.
295         * configure: Regenerate.
296         * src/c++26/text_encoding.cc: Use <xlocale.h>.
298 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
299             Ewan Higgs  <ewan.higgs@gmail.com>
301         * include/bits/text_encoding-data.h: Regenerate.
302         * scripts/gen_text_encoding_data.py: Add extra_aliases dict
303         containing "ASCII".
304         * testsuite/std/text_encoding/cons.cc: Check "ascii" is known.
306 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
308         * doc/xml/manual/using.xml: Update tables of supported headers.
309         * doc/html/*: Regenerate.
311 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
313         * include/std/bitset (_Base_bitset::_M_do_to_ullong): Avoid
314         -Wshift-count-overflow warning.
316 2024-01-30  Jonathan Wakely  <jwakely@redhat.com>
318         * testsuite/std/time/clock/gps/io.cc: Fix expected result in
319         assertion and call test_format() from main.
321 2024-01-29  François Dumont  <fdumont@gcc.gnu.org>
323         * doc/xml/manual/debug_mode.xml: Link against libstdc++exp.a to use
324         _GLIBCXX_DEBUG_BACKTRACE macro.
326 2024-01-24  Huanghui Nie  <nnnjkk@gmail.com>
327             Théo Papadopoulo   <papadopoulo@gmail.com>
329         * include/bits/hashtable.h (_Hahstable<>::_M_remove_bucket_begin): Remove
330         _M_before_begin check and cleanup implementation.
332 2024-01-22  Jonathan Wakely  <jwakely@redhat.com>
334         * testsuite/std/time/clock/file/io.cc: Fix expected result in
335         assertion and call test_format() from main.
337 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
339         PR libstdc++/113500
340         * include/bits/chrono_io.h (__formatter_chrono::_M_S): Fix
341         printing of subseconds with floating-point rep.
342         (__formatter_chrono::_M_format_to_ostream): Do not write
343         time_point specializations directly to the ostream.
344         (formatter<chrono::sys_time<D>, C>::parse): Do not allow an
345         empty chrono-spec if the type fails to meet the constraints for
346         writing to an ostream with operator<<.
347         * testsuite/std/time/clock/file/io.cc: Check formatting
348         non-integral times with empty chrono-specs.
349         * testsuite/std/time/clock/gps/io.cc: Likewise.
350         * testsuite/std/time/clock/utc/io.cc: Likewise.
351         * testsuite/std/time/hh_mm_ss/io.cc: Likewise.
353 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
355         * include/bits/chrono.h (__file_clock::from_sys)
356         (__file_clock::to_sys, __file_clock::_S_from_sys)
357         (__file_clock::_S_to_sys): Use common_type for return type.
358         * testsuite/std/time/clock/file/members.cc: Check round trip
359         conversion for time with lower precision that seconds.
361 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
363         PR libstdc++/113512
364         * include/std/format (__formatter_fp::format): Fix logic for
365         alternate forms.
366         * testsuite/std/format/functions/format.cc: Check buggy cases of
367         alternate forms with g presentation type.
369 2024-01-20  Marek Polacek  <polacek@redhat.com>
371         PR c++/111410
372         * include/std/ranges: Add #pragma to disable -Wdangling-reference with
373         std::ranges::views::__adaptor::operator|.
375 2024-01-19  Jonathan Wakely  <jwakely@redhat.com>
377         * include/std/format (_Spec::_M_parse_fill_and_align): Do not
378         use CTAD for _Utf32_view.
380 2024-01-19  Jonathan Wakely  <jwakely@redhat.com>
382         PR libstdc++/108822
383         * include/std/tuple (__glibcxx_no_dangling_refs) [C++17]: Fix
384         wrong fold-operator.
385         * testsuite/20_util/tuple/dangling_ref.cc: Check tuples with one
386         element and three elements. Check allocator-extended
387         constructors.
389 2024-01-19  Patrick Palka  <ppalka@redhat.com>
391         * include/precompiled/stdc++.h [_GLIBCXX_HOSTED]: Include
392         <print> and <text_encoding> for C++23 and C++26 respectively.
394 2024-01-18  Patrick Palka  <ppalka@redhat.com>
396         * include/bits/stl_pair.h [__cplusplus > 202002L]:
397         Guard P2321R2 changes with __glibcxx_ranges_zip instead.
399 2024-01-18  Patrick Palka  <ppalka@redhat.com>
401         * include/std/tuple [__cplusplus > 202002L]: Guard P2321R2
402         changes with __cpp_lib_ranges_zip instead.
404 2024-01-18  Patrick Palka  <ppalka@redhat.com>
406         PR libstdc++/109536
407         * include/debug/safe_base.h (_Safe_sequence_base::_M_swap):
408         Remove _GLIBCXX20_CONSTEXPR from non-inline member function.
409         * include/debug/safe_iterator.h
410         (_GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN): Define.
411         (_GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END): Define.
412         (_Safe_iterator::operator=): Use them around the code path that
413         defines a variable of type __gnu_cxx::__scoped_lock.
414         (_Safe_iterator::operator++): Likewise.
415         (_Safe_iterator::operator--): Likewise.
416         (_Safe_iterator::operator+=): Likewise.
417         (_Safe_iterator::operator-=): Likewise.
418         * testsuite/23_containers/vector/element_access/constexpr.cc
419         (test_iterators): Test more iterator operations.
420         * testsuite/23_containers/vector/bool/element_access/constexpr.cc
421         (test_iterators): Likewise.
422         * testsuite/std/ranges/adaptors/all.cc (test08) [_GLIBCXX_DEBUG]:
423         Remove.
425 2024-01-18  Jonathan Wakely  <jwakely@redhat.com>
427         * include/bits/unicode.h (__charset_alias_match): Initialize
428         __var_a and __var_b.
430 2024-01-18  Jonathan Wakely  <jwakely@redhat.com>
432         PR libstdc++/113450
433         * testsuite/std/format/functions/format.cc: Use signed char
434         instead of int8_t.
436 2024-01-17  Jonathan Wakely  <jwakely@redhat.com>
438         PR libstdc++/113318
439         * acinclude.m4 (GLIBCXX_CONFIGURE): Add c++26 directory.
440         (GLIBCXX_CHECK_TEXT_ENCODING): Define.
441         * config.h.in: Regenerate.
442         * configure: Regenerate.
443         * configure.ac: Use GLIBCXX_CHECK_TEXT_ENCODING.
444         * include/Makefile.am: Add new headers.
445         * include/Makefile.in: Regenerate.
446         * include/bits/locale_classes.h (locale::encoding): Declare new
447         member function.
448         * include/bits/unicode.h (__charset_alias_match): New function.
449         * include/bits/text_encoding-data.h: New file.
450         * include/bits/version.def (text_encoding): Define.
451         * include/bits/version.h: Regenerate.
452         * include/std/text_encoding: New file.
453         * src/Makefile.am: Add new subdirectory.
454         * src/Makefile.in: Regenerate.
455         * src/c++26/Makefile.am: New file.
456         * src/c++26/Makefile.in: New file.
457         * src/c++26/text_encoding.cc: New file.
458         * src/experimental/Makefile.am: Include c++26 convenience
459         library.
460         * src/experimental/Makefile.in: Regenerate.
461         * python/libstdcxx/v6/printers.py (StdTextEncodingPrinter): New
462         printer.
463         * scripts/gen_text_encoding_data.py: New file.
464         * testsuite/22_locale/locale/encoding.cc: New test.
465         * testsuite/ext/unicode/charset_alias_match.cc: New test.
466         * testsuite/std/text_encoding/cons.cc: New test.
467         * testsuite/std/text_encoding/members.cc: New test.
468         * testsuite/std/text_encoding/requirements.cc: New test.
470 2024-01-17  Jonathan Wakely  <jwakely@redhat.com>
472         * include/bits/unicode.h (_Grapheme_cluster_view): Require view.
473         Do not use CTAD for _Utf32_view.
474         (__format_width, __truncate): Do not use CTAD.
475         (enable_borrowed_range<_Utf_view<T, R>>): Define specialization.
476         (enable_borrowed_range<_Grapheme_cluster_view<R>>): Likewise.
478 2024-01-17  Patrick Palka  <ppalka@redhat.com>
480         * include/std/ranges (views::_CartesianProduct::operator()):
481         Adjust identity case as per P2540R1.
482         * testsuite/std/ranges/cartesian_product/1.cc (test01):
483         Adjust expected result of the identity case.
485 2024-01-15  Patrick Palka  <ppalka@redhat.com>
487         * include/std/variant (__detail::__variant::_Variadic_union):
488         Add bool __trivially_destructible template parameter.
489         (__detail::__variant::_Variadic_union::~_Variadic_union):
490         Use __trivially_destructible in constraints instead.
491         (__detail::__variant::_Variant_storage): Pass
492         __trivially_destructible value to _Variadic_union.
494 2024-01-15  Patrick Palka  <ppalka@redhat.com>
496         * include/bits/stl_iterator.h (const_iterator): Define conversion
497         operators as per P2836R1.
498         * include/bits/version.def (ranges_as_const): Update value.
499         * include/bits/version.h: Regenerate.
500         * testsuite/24_iterators/const_iterator/1.cc (test04): New test.
501         * testsuite/std/ranges/adaptors/as_const/1.cc: Adjust expected
502         value of __cpp_lib_ranges_as_const.
503         * testsuite/std/ranges/version_c++23.cc: Likewise.
505 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
507         PR libstdc++/108822
508         * include/std/tuple (__assignable, __is_nothrow_assignable):
509         Move pre-C++20 definitions adjacent to their use.
511 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
513         PR testsuite/113366
514         * include/std/format (basic_format_arg): Use __formattable
515         variable template instead of __format::__formattable_with
516         concept.
518 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
520         * src/c++20/tzdata.zi: Import new file from 2023d release.
521         * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds)
522         Update expiry date for leap seconds list.
524 2024-01-13  Jonathan Wakely  <jwakely@redhat.com>
526         PR libstdc++/108822
527         * include/std/tuple (tuple): Add checks for dangling references.
528         Reimplement constraints and constant expressions using C++20
529         features.
530         * include/std/type_traits [C++20]
531         (__is_implicitly_default_constructible_v): Define.
532         (__is_implicitly_default_constructible): Use variable template.
533         * testsuite/20_util/tuple/dangling_ref.cc: New test.
535 2024-01-13  Patrick Palka  <ppalka@redhat.com>
537         PR libstdc++/108827
538         PR libstdc++/111327
539         * include/bits/version.def (bind_back): Define.
540         * include/bits/version.h: Regenerate.
541         * include/std/functional (_Bind_back): Define for C++23.
542         (bind_back): Likewise.
543         * testsuite/20_util/function_objects/bind_back/1.cc: New test
544         (adapted from corresponding bind_front test).
545         * testsuite/20_util/function_objects/bind_back/111327.cc: Likewise.
547 2024-01-13  Patrick Palka  <ppalka@redhat.com>
549         * include/std/functional (_Bind_front): Remove =default special
550         member function declarations.
551         (_Bind_front::operator()): Implement using C++23 deducing this
552         when available.
553         * testsuite/20_util/function_objects/bind_front/111327.cc:
554         Adjust testcase to expect better errors in C++23 mode.
556 2024-01-13  Patrick Palka  <ppalka@redhat.com>
558         * include/std/ranges (views::__adaptor::operator|): Perform
559         perfect forwarding of arguments.
560         (views::__adaptor::_RangeAdaptor::operator()): Pass dummy
561         first argument to _Partial.
562         (views::__adaptor::_Partial::_Partial): Likewise.  Add dummy
563         first parameter.
564         (views::__adaptor::_Pipe::_Pipe): Perform perfect forwarding
565         of arguments.
566         (to): Pass dummy first argument to _Partial.
568 2024-01-13  Jonathan Wakely  <jwakely@redhat.com>
570         PR libstdc++/107466
571         * include/bits/random.tcc (subtract_with_carry_engine::seed):
572         Implement proposed resolution of LWG 4014.
573         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
574         line number.
575         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/lwg3809.cc:
576         Check for expected result of 64-bit engine with seed that
577         doesn't fit in 32-bits.
579 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
581         PR libstdc++/113320
582         * include/std/format (__format::_Runtime_format_string): Add
583         constructor and disable copy operations.
584         (basic_format_string(_Runtime_format_string)): Add noexcept and
585         take parameter by value not rvalue reference.
586         (runtime_format): Add noexcept.
587         * testsuite/std/format/runtime_format.cc: Check noexcept. Check
588         that construction is only possible from prvalues, not xvalues.
590 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
592         PR libstdc++/105505
593         * include/bits/stl_pair.h (pair::pair(U1&&, U2&&)) [C++23]: Add
594         default template arguments, as per P1951R1.
595         * testsuite/20_util/pair/cons/default_tmpl_args.cc: New test.
597 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
599         * include/std/format (__format::_Arg_store): Fix PR number in
600         comment. Simplify preprocessor code.
602 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
604         * doc/xml/manual/evolution.xml: Fix spelling.
605         * doc/html/manual/api.html: Regenerate.
607 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
609         * doc/xml/manual/evolution.xml: Document addition of
610         libstdc++exp.a.
611         * doc/html/*: Regenerate.
613 2024-01-11  Marcus Haehnel  <marcus.haehnel@kernkonzept.com>
615         * libsupc++/eh_unex_handler.cc: Adjust definition type to
616         declaration.
618 2024-01-11  Michael Levine  <mlevine55@bloomberg.net>
620         * include/std/ranges (__glibcxx_want_ranges_iota): Remove
621         duplicate definition.
623 2024-01-11  François Dumont  <fdumont@gcc.gnu.org>
625         PR libstdc++/112477
626         * src/c++11/debug.cc
627         (_Safe_iterator_base::_M_attach): Reset _M_version to 0 if attaching to null
628         sequence.
629         (_Safe_iterator_base::_M_attach_single): Likewise.
630         (_Safe_local_iterator_base::_M_attach): Likewise.
631         (_Safe_local_iterator_base::_M_attach_single): Likewise.
632         * testsuite/23_containers/map/debug/112477.cc: New test case.
634 2024-01-11  Patrick Palka  <ppalka@redhat.com>
636         * include/bits/move.h (__like_t): Define in C++23 mode.
637         * include/std/ranges (views::__adaptor::Partial::operator()):
638         Implement using C++23 deducing this when available.
639         (views::__adaptor::_Pipe::operator()): Likewise.
640         * testsuite/std/ranges/adaptors/100577.cc: Adjust testcase to
641         accept new "no match for call" errors issued in C++23 mode.
642         * testsuite/std/ranges/adaptors/lazy_split_neg.cc: Likewise.
644 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
646         * python/libstdcxx/v6/printers.py (StdIntegralConstantPrinter):
647         Add printer for std::integral_constant.
648         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test it.
650 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
652         PR libstdc++/113258
653         * libsupc++/new_opa.cc: Prefer to use posix_memalign if
654         available.
656 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
658         * src/filesystem/ops-common.h (stat_type): Use using.
660 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
662         PR libstdc++/113250
663         * src/c++17/fs_ops.cc (fs::equivalent): Use || instead of &&.
664         * src/filesystem/ops.cc (fs::equivalent): Likewise.
665         * testsuite/27_io/filesystem/operations/equivalent.cc: Handle
666         error codes.
667         * testsuite/experimental/filesystem/operations/equivalent.cc:
668         Likewise.
670 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
672         * include/std/type_traits (is_compound): Do not use __not_.
673         (is_compound_v): Use is_fundamental_v instead.
675 2024-01-11  Patrick Palka  <ppalka@redhat.com>
677         * include/bits/utility.h (_Nth_type): Use
678         _GLIBCXX_USE_BUILTIN_TRAIT instead of __has_builtin.
680 2024-01-09  Jonathan Wakely  <jwakely@redhat.com>
682         * include/bits/unicode-data.h: Regenerate.
683         * include/bits/unicode.h (_Utf_iterator::operator++()): Fix off
684         by one error.
685         (__incb_property): Add missing check for values before the
686         first edge.
687         (__is_extended_pictographic): Invert return values to fix
688         copy&pasted logic.
689         (_Grapheme_cluster_view::_Iterator): Remove second iterator
690         member and find end of cluster lazily.
691         * testsuite/ext/unicode/grapheme_view.cc: New test.
692         * testsuite/ext/unicode/properties.cc: New test.
693         * testsuite/ext/unicode/view.cc: New test.
695 2024-01-09  Andreas Schwab  <schwab@linux-m68k.org>
697         * scripts/extract_symvers.in: Require final colon to only match
698         .dsynsym in the header of the dynamic symtab.
700 2024-01-09  Jonathan Wakely  <jwakely@redhat.com>
702         * include/bits/chrono_io.h (__formatter_chrono::_M_F): Simplify
703         handling of string returned from std::format.
704         (__formatter_chrono::_M_R_T): Likewise.
706 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
708         * include/bits/unicode.h (__null_sentinel): Remove.
709         * testsuite/17_intro/names.cc: Add __null_sentinel.
711 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
713         * include/std/format (__format::_Runtime_format_string): Define
714         new class template.
715         (basic_format_string): Add non-consteval constructor for runtime
716         format strings.
717         (runtime_format): Define new function for C++26.
718         * testsuite/std/format/runtime_format.cc: New test.
720 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
722         * include/bits/chrono_io.h (__formatter_chrono): Always use
723         lvalue arguments to make_format_args.
724         * include/std/format (make_format_args): Change parameter pack
725         from forwarding references to lvalue references. Remove use of
726         remove_reference_t which is now unnecessary.
727         (format_to, formatted_size): Remove incorrect forwarding of
728         arguments.
729         * include/std/ostream (print): Remove forwarding of arguments.
730         * include/std/print (print): Likewise.
731         * testsuite/20_util/duration/io.cc: Use lvalues as arguments to
732         make_format_args.
733         * testsuite/std/format/arguments/args.cc: Likewise.
734         * testsuite/std/format/arguments/lwg3810.cc: Likewise.
735         * testsuite/std/format/functions/format.cc: Likewise.
736         * testsuite/std/format/functions/vformat_to.cc: Likewise.
737         * testsuite/std/format/string.cc: Likewise.
738         * testsuite/std/time/day/io.cc: Likewise.
739         * testsuite/std/time/month/io.cc: Likewise.
740         * testsuite/std/time/weekday/io.cc: Likewise.
741         * testsuite/std/time/year/io.cc: Likewise.
742         * testsuite/std/time/year_month_day/io.cc: Likewise.
743         * testsuite/std/format/arguments/args_neg.cc: New test.
745 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
747         * include/Makefile.am: Add new headers.
748         * include/Makefile.in: Regenerate.
749         * include/bits/unicode.h: New file.
750         * include/bits/unicode-data.h: New file.
751         * include/std/format: Include <bits/unicode.h>.
752         (__literal_encoding_is_utf8): Move to <bits/unicode.h>.
753         (_Spec::_M_fill): Change type to char32_t.
754         (_Spec::_M_parse_fill_and_align): Read a Unicode scalar value
755         instead of a single character.
756         (__write_padded): Change __fill_char parameter to char32_t and
757         encode it into the output.
758         (__formatter_str::format): Use new __unicode::__field_width and
759         __unicode::__truncate functions.
760         * include/std/ostream: Adjust namespace qualification for
761         __literal_encoding_is_utf8.
762         * include/std/print: Likewise.
763         * src/c++23/print.cc: Add [[unlikely]] attribute to error path.
764         * testsuite/ext/unicode/view.cc: New test.
765         * testsuite/std/format/functions/format.cc: Add missing examples
766         from the standard demonstrating alignment with non-ASCII
767         characters. Add examples checking correct handling of extended
768         grapheme clusters.
770 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
772         * include/bits/version.def (format_uchar): Define.
773         * include/bits/version.h: Regenerate.
774         * include/std/format (formatter<C, C>::format): Check for
775         _Pres_c and call _M_format_character directly. Cast C to its
776         unsigned equivalent for formatting as an integer.
777         (formatter<char, wchar_t>::format): Likewise.
778         (basic_format_arg(T&)): Store char arguments as unsigned char
779         for formatting to a wide string.
780         * testsuite/std/format/functions/format.cc: Adjust test. Check
781         formatting of
783 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
785         PR libstdc++/112997
786         * libsupc++/unwind-cxx.h (__cxa_call_terminate): Change first
787         parameter to void*.
789 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
791         * testsuite/20_util/variant/87619.cc: Remove dg-timeout-factor.
793 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
795         * include/std/type_traits (is_trivially_destructible_v): Use
796         built-in directly when concepts are supported.
797         * testsuite/20_util/is_trivially_destructible/value_v.cc: New
798         test.
800 2024-01-06  Gwenole Beauchesne  <gb.devel@gmail.com>
802         * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Use
803         nonnull arguments to strtoimax() and wcstoimax() functions.
805 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
807         * src/c++17/fs_path.cc (path::_List::reserve): Limit maximum
808         size and check for overflows in arithmetic.
809         (path::operator/=(const path&)): Remove redundant exponential
810         growth calculation.
812 2024-01-05  Martin Küttler  <martin.kuettler@kernkonzept.com>
814         * src/c++17/fs_path.cc (path::_List::reserve): Avoid
815         floating-point arithmetic.
817 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
819         PR libstdc++/113241
820         * include/std/type_traits (is_convertible_v): Guard use of
821         built-in with preprocessor check.
823 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
825         PR libstdc++/113200
826         * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Use
827         __builtin_constant_p to check for unrelated pointers that cannot
828         be compared during constant evaluation.
829         * testsuite/21_strings/char_traits/requirements/113200.cc: New
830         test.
832 2024-01-05  Cassio Neri  <cassio.neri@gmail.com>
834         * include/std/chrono: Fix + and - for months and weekdays.
835         * testsuite/std/time/month/1.cc: Add constexpr tests against overflow.
836         * testsuite/std/time/month/2.cc: New test for extreme values.
837         * testsuite/std/time/weekday/1.cc: Add constexpr tests against overflow.
838         * testsuite/std/time/weekday/2.cc: New test for extreme values.
840 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
842         PR libstdc++/113099
843         * include/bits/locale_classes.tcc (__try_use_facet): Use
844         if-constexpr for C++11 and up.
846 2024-01-05  Ken Matsui  <kmatsui@gcc.gnu.org>
848         * include/std/type_traits: Use _GLIBCXX_USE_BUILTIN_TRAIT.
850 2024-01-04  Arsen Arsenović  <arsen@aarsen.me>
852         * include/std/generator (_Subyield_state::_M_jump_in): Fix typo
853         reported by Will Hawkins <hawkinsw@obs.cr>.
855 2024-01-04  Arsen Arsenović  <arsen@aarsen.me>
857         * include/std/generator (_Stateless_alloc): Rename typename _A
858         to _All.
860 2024-01-03  Patrick Palka  <ppalka@redhat.com>
862         PR testsuite/113175
863         * testsuite/std/ranges/iota/max_size_type.cc (test02): Reduce
864         'limit' to 100 from 1000 and adjust 'log2_limit' accordingly.
865         (test03): Likewise.
868 Copyright (C) 2024 Free Software Foundation, Inc.
870 Copying and distribution of this file, with or without modification,
871 are permitted in any medium without royalty provided the copyright
872 notice and this notice are preserved.