]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/ChangeLog
Allow --with-cpu=power10
[thirdparty/gcc.git] / libstdc++-v3 / ChangeLog
CommitLineData
605a8f3b
GA
12020-06-22 David Edelsohn <dje.gcc@gmail.com>
2
3 * Makefile.am: Use -include.
4 * Makefile.in: Regenerate.
5
f86e11a2
GA
62020-06-21 David Edelsohn <dje.gcc@gmail.com>
7
8 * Makefile.am (tmake_file): Build and install AIX-style FAT libraries.
9 * Makefile.in: Regenerate.
10 * configure.ac (tmake_file): Substitute.
11 * configure: Regenerate.
12 * configure.host (aix*): Define tmake_file.
13 * config/os/aix/t-aix: New file.
14
bbac3886
GA
152020-06-20 Jason Merrill <jason@redhat.com>
16
17 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc:
18 Remove greedy_ops tests.
19 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc:
20 Remove greedy_ops tests.
21
e37658df
GA
222020-06-19 Jonathan Wakely <jwakely@redhat.com>
23
24 PR libstdc++/95765
25 * include/bits/stl_algobase.h (__size_to_integer(float))
26 (__size_to_integer(double), __size_to_integer(long double))
27 (__size_to_integer(__float128)): Cast return type explicitly.
28 * include/bits/stl_uninitialized.h (__uninitialized_default_1<true>):
29 Remove unused typedef.
30
312020-06-19 Jonathan Wakely <jwakely@redhat.com>
32
33 * include/bits/stl_pair.h (_Index_tuple): Remove redundant
34 namespace qualification.
35 (pair::pair(tuple<>&, tuple<>&, _Index_tuple, _Index_tuple)):
36 Likewise.
37 * include/std/tuple (_Head_base, _Tuple_impl, tuple_size)
38 (tuple_element, __get_helper, get, __make_tuple_impl)
39 (__make_1st_indices, __tuple_concater)
40 (pair::pair(tuple<>&, tuple<>&, _Index_tuple, _Index_tuple)):
41 Likewise.
42 * include/std/utility (tuple_element, __is_tuple_like_impl)
43 (tuple_size, __pair_get, get): Likewise.
44
452020-06-19 Jonathan Wakely <jwakely@redhat.com>
46
47 * include/bits/std_function.h (function): Define all member
48 functions inline.
49
502020-06-19 Marc Glisse <marc.glisse@inria.fr>
51
52 * include/bits/stl_algo.h (__includes): Simplify the code.
53
542020-06-19 Marc Glisse <marc.glisse@inria.fr>
55
56 * include/std/optional (optional()): Explicitly define it.
57
aff95ee7
GA
582020-06-17 Jonathan Wakely <jwakely@redhat.com>
59
60 PR libstdc++/94540
61 * include/bits/stl_uninitialized.h (__uninitialized_default_1<true>):
62 Construct the first value at *__first instead of on the stack.
63 (__uninitialized_default_n_1<true>): Likewise.
64 Improve comments on several of the non-standard algorithms.
65 * testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc:
66 New test.
67 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc:
68 New test.
69 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc:
70 New test.
71 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc:
72 New test.
73 * testsuite/23_containers/vector/cons/94540.cc: New test.
74
752020-06-17 Jonathan Wakely <jwakely@redhat.com>
76
77 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
78 Replace Value type with int so trivial code path is used.
79 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
80 Likewise.
81
822020-06-17 Jonathan Wakely <jwakely@redhat.com>
83
84 * include/bits/stl_uninitialized.h (uninitialized_fill_n): Only
85 use std::fill_n when the size is an integral type.
86 (__uninitialized_default_n): Likewise.
87 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
88 New test.
89 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc:
90 New test.
91 * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
92 New test.
93
56638b9b
GA
942020-06-16 Jonathan Wakely <jwakely@redhat.com>
95
96 PR libstdc++/95282
97 * include/bits/atomic_base.h (__atomic_impl::load): Use the _Val
98 alias instead of deducing _Tp as an unqualified type.
99 (__atomic_impl::exchange): Use the _Val alias to remove volatile
100 from the reinterpret_cast result type.
101
1022020-06-16 Jonathan Wakely <jwakely@redhat.com>
103
104 * include/std/atomic (atomic): Add static assertions.
105 * testsuite/29_atomics/atomic/requirements/types_neg.cc: New test.
106
1072020-06-16 Patrick Palka <ppalka@redhat.com>
108
109 PR libstdc++/94003
110 * testsuite/20_util/is_constructible/94003.cc: New test.
111
6fb94d67
GA
1122020-06-15 Jonathan Wakely <jwakely@redhat.com>
113
114 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
115 Update value for C++20.
116 * include/std/version (__cpp_lib_constexpr_char_traits): Likewise.
117 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
118 Update expected value.
119 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
120 Likewise.
121
1222020-06-15 Paul Keir <paul.keir@uws.ac.uk>
123
124 * include/bits/char_traits.h (char_traits::move): constexpr move with
125 overlap was using copy_backward incorrectly.
126 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
127 New test.
128
8e3b453e
GA
1292020-06-12 Jonathan Wakely <jwakely@redhat.com>
130
131 * testsuite/29_atomics/atomic_flag/clear/1.cc: Also test clear()
132 when the value is currently set.
133 * testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc:
134 Actually check the return value.
135 * testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc:
136 Likewise.
137
1382020-06-12 Jonathan Wakely <jwakely@redhat.com>
139
140 * include/bits/atomic_base.h (atomic_flag::test): Add missing
141 const qualifiers.
142 * testsuite/29_atomics/atomic_flag/test/explicit.cc: Add
143 dg-options and verify results of test function.
144 * testsuite/29_atomics/atomic_flag/test/implicit.cc: Likewise.
145
e68e80c8
GA
1462020-06-11 Jonathan Wakely <jwakely@redhat.com>
147
148 PR libstdc++/94749
149 * include/bits/istream.tcc (basic_istream::ignore(streamsize, CharT)):
150 Only discard an extra character if we didn't already reach the
151 maximum number.
152 * src/c++98/istream.cc (istream::ignore(streamsiz, char))
153 (wistream::ignore(streamsize, wchar_t)): Likewise.
154 * testsuite/27_io/basic_istream/ignore/char/94749.cc: New test.
155 * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc: New test.
156
ec6ffbb9
GA
1572020-06-10 Patrick Palka <ppalka@redhat.com>
158
159 PR libstdc++/95578
160 * include/bits/ranges_algo.h (__lexicographical_compare_fn):
161 Also check that the iterator and sentinel have the same type before
162 applying the unwrapping optimization for __normal_iterator.
163 Split the check into two, one for the first iterator/sentinel
164 pair and another for second iterator/sentinel pair. Remove uses
165 of __niter_base, and remove uses of std::move on a
166 __normal_iterator.
167 * include/bits/ranges_algobase.h (__equal_fn): Likewise.
168 (__copy_or_move): Likewise. Perform similar adjustments for
169 the reverse_iterator and move_iterator optimizations. Inline
170 the checks into the if-constexprs, and use using-declarations to
171 make them less visually noisy. Remove uses of __niter_wrap.
172 (__copy_or_move_backward): Likewise.
173 * testsuite/25_algorithms/copy/95578.cc: New test.
174 * testsuite/25_algorithms/copy_backward/95578.cc: New test.
175 * testsuite/25_algorithms/equal/95578.cc: New test.
176 * testsuite/25_algorithms/lexicographical_compare/95578.cc: New test.
177 * testsuite/25_algorithms/move/95578.cc: New test.
178 * testsuite/25_algorithms/move_backward/95578.cc: New test.
179
1802020-06-10 François Dumont <fdumont@gcc.gnu.org>
181 Jonathan Wakely <jwakely@redhat.com>
182
183 * include/bits/deque.tcc (__lex_cmp_dit): New.
184 (__lexicographical_compare_aux1): Define overloads for deque
185 iterators.
186 * include/bits/stl_algobase.h (__lexicographical_compare::__3way):
187 New static member function.
188 (__lexicographical_compare<true>::__3way): Likewise.
189 (__lexicographical_compare<true>::__lc): Use __3way.
190 (__lexicographical_compare_aux): Rename to
191 __lexicographical_compare_aux1 and declare overloads for deque
192 iterators.
193 (__lexicographical_compare_aux): Define new forwarding function
194 that calls __lexicographical_compare_aux1 and declare new overloads
195 for safe iterators.
196 (lexicographical_compare): Do not use __niter_base on
197 parameters.
198 * include/debug/safe_iterator.tcc
199 (__lexicographical_compare_aux): Define overloads for safe
200 iterators.
201 * testsuite/25_algorithms/lexicographical_compare/1.cc: Add
202 checks with random access iterators.
203 * testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc:
204 New test.
205
b952c2cf
GA
2062020-06-09 Jonathan Wakely <jwakely@redhat.com>
207
208 * include/bits/stl_iterator.h (move_iterator::operator=): Define.
209 * testsuite/24_iterators/move_iterator/dr3265.cc: New test.
210
2112020-06-09 Jonathan Wakely <jwakely@redhat.com>
212
213 * include/std/optional (bad_optional_access): Define default
214 constructor and destructor as defaulted.
215 * testsuite/20_util/optional/bad_access.cc: New test.
216
2c455ae0
GA
2172020-06-08 Jonathan Wakely <jwakely@redhat.com>
218
219 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error
220 line number.
221 * testsuite/20_util/default_delete/void_neg.cc: Likewise.
222
2232020-06-08 Jonathan Wakely <jwakely@redhat.com>
224
225 * include/bits/unique_ptr.h (operator<<): Define for C++20.
226 * testsuite/20_util/unique_ptr/io/lwg2948.cc: New test.
227
3add3425
GA
2282020-06-04 Jonathan Wakely <jwakely@redhat.com>
229
230 * include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref)
231 (__detail::__cat, __detail::__diff): Move to class scope in the
232 relevant __iterator_traits specializations.
233 (__iterator_traits<>): Use nested class templates instead of ones from
234 namespace __detail.
235 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to
236 class scope in iterator_traits<common_iterator<I, S>>.
237 (iterator_traits<common_iterator<I, S>>): Use nested class template
238 instead of __detail::__common_iter_ptr.
239
2402020-06-04 François Dumont <fdumont@gcc.gnu.org>
241
242 * include/bits/stl_algo.h (__copy_n_a): Move to ...
243 * include/bits/stl_algobase.h (__copy_n_a): ...here. Add __strict
244 parameter.
245 (__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
246 Declare.
247 (__niter_base(const _Safe_iterator<_Ite, _Seq,
248 random_access_iterator_tag>&)): Declare.
249 (__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
250 _Deque_iterator<>)): Declare.
251 * include/bits/deque.tcc
252 (__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
253 _Deque_iterator<>)): New.
254 (__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
255 New.
256 * include/bits/streambuf_iterator.h
257 (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*, bool)): Adapt.
258 * include/debug/safe_iterator.tcc (__niter_base): New.
259 * testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
260 (test03): New.
261 * testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc:
262 New test.
263 * testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc:
264 New test.
265 * testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc: New test.
266 * testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc:
267 New test.
268
2692020-06-04 Jonathan Wakely <jwakely@redhat.com>
270
271 * include/bits/ranges_algobase.h (__copy_n_fn): Only call
272 ranges::copy for positive values.
273 * include/bits/stl_algo.h (copy_n): Convert Size argument to an
274 integral type and only call __copy_n for positive values.
275 * testsuite/util/testsuite_iterators.h
276 (random_access_iterator_wrapper::operator+=): Fix range check for
277 negative values.
278 (output_container, input_container, forward_container)
279 (bidirectional_container, random_access_container): New alias
280 templates.
281 * testsuite/25_algorithms/copy_n/5.cc: New test.
282
a9312a79
GA
2832020-06-02 Jonathan Wakely <jwakely@redhat.com>
284
285 PR libstdc++/90102
286 * include/debug/deque (deque(const _Base&)): Replace parameter
287 with a struct that wraps a const _Base&.
288 * include/debug/forward_list (forward_list(_Base_ref)): New
289 constructor.
290 * include/debug/list (list(const _Base&)): Replace parameter
291 with a struct that wraps a const _Base&.
292 * include/debug/map.h (map(const _Base&)): Likewise.
293 * include/debug/multimap.h (multimap(const _Base&)): Likewise.
294 * include/debug/multiset.h (multiset(const _Base&)): Likewise.
295 * include/debug/set.h (set(const _Base&)): Likewise.
296 * include/debug/unordered_map (unordered_map(const _Base&))
297 (unordered_multimap(const _Base&)): Likewise.
298 * include/debug/unordered_set (unordered_set(const _Base&))
299 (unordered_multiset(const _Base&)): Likewise.
300 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
301 Adjust dg-error line number.
302 * include/debug/vector (vector(const _Base&)): Likewise.
303 * testsuite/23_containers/deque/debug/90102.cc: New test.
304 * testsuite/23_containers/forward_list/debug/90102.cc: New test.
305 * testsuite/23_containers/list/debug/90102.cc: New test.
306 * testsuite/23_containers/map/debug/90102.cc: New test.
307 * testsuite/23_containers/multimap/debug/90102.cc: New test.
308 * testsuite/23_containers/multiset/debug/90102.cc: New test.
309 * testsuite/23_containers/set/debug/90102.cc: New test.
310 * testsuite/23_containers/unordered_map/debug/90102.cc: New test.
311 * testsuite/23_containers/unordered_multimap/debug/90102.cc: New test.
312 * testsuite/23_containers/unordered_multiset/debug/90102.cc: New test.
313 * testsuite/23_containers/unordered_set/debug/90102.cc: New test.
314 * testsuite/23_containers/vector/debug/90102.cc: New test.
315
4a9aa9de
GA
3162020-06-01 Jonathan Wakely <jwakely@redhat.com>
317
318 PR libstdc++/95392
319 * include/bits/fs_path.h (path::_S_to_string): Move to
320 namespace-scope and rename to ...
321 (__detail::__string_from_range): ... this.
322 [WINDOWS] (__detail::__wstr_from_utf8): New function template to
323 convert a char sequence containing UTF-8 to wstring.
324 (path::_S_convert(Iter, Iter)): Adjust call to _S_to_string.
325 (path::_S_convert_loc(Iter, Iter, const locale&)): Likewise.
326 (u8path(InputIterator, InputIterator)) [WINDOWS]: Use
327 __string_from_range to obtain a contiguous range and
328 __wstr_from_utf8 to obtain a wide string.
329 (u8path(const Source&)) [WINDOWS]: Use __effective_range to
330 obtain a contiguous range and __wstr_from_utf8 to obtain a wide
331 string.
332 (path::_S_convert(const _EcharT*, const _EcharT)) [WINDOWS]:
333 Use __wstr_from_utf8.
334
3352020-06-01 Jonathan Wakely <jwakely@redhat.com>
336
337 * testsuite/util/testsuite_iterators.h:
338 (input_iterator_wrapper::operator++(int)): Return proxy object.
339
3402020-06-01 Jonathan Wakely <jwakely@redhat.com>
341
342 * doc/xml/manual/evolution.xml: Document deprecation of
343 __is_nullptr_t and removal of std::allocator members.
344 * doc/html/manual/api.html: Regenerate.
345
3462020-06-01 Jonathan Wakely <jwakely@redhat.com>
347
348 * doc/xml/manual/containers.xml: Replace <xref> with <link>.
349 * doc/xml/manual/evolution.xml: Likewise.
350 * doc/html/manual/api.html: Regenerate.
351 * doc/html/manual/containers.html: Regenerate.
352
3532020-06-01 Gerald Pfeifer <gerald@pfeifer.com>
354
355 * doc/xml/faq.xml: Adjust Valgrind reference and remove another.
356 * doc/html/faq.html: Regenerate.
357
e7340ed7
GA
3582020-06-01 Gerald Pfeifer <gerald@pfeifer.com>
359
360 * doc/xml/manual/policy_data_structures_biblio.xml: Remove
361 stray change.
362
3632020-06-01 Gerald Pfeifer <gerald@pfeifer.com>
364
365 * doc/xml/manual/policy_data_structures_biblio.xml: Switch
366 www.cs.princeton.edu to https.
367 * doc/html/manual/policy_data_structures.html: Regenerate.
368
3692020-05-31 Douglas B Rupp <douglas.b.rupp@gmail.com>
370
371 * crossconfig.m4 (<*-vxworks>): Check for more math decls.
372 * configure: Rebuild.
373
885ef72f
GA
3742020-05-29 H.J. Lu <hjl.tools@gmail.com>
375
376 PR bootstrap/95413
377 * configure: Regenerated.
378
3792020-05-29 François Dumont <fdumont@gcc.gnu.org>
380
381 PR libstdc++/95079
382 * include/bits/hashtable_policy.h (_Insert_base<>::try_emplace): New.
383 * include/bits/unordered_map.h (unordered_map<>::try_emplace): Adapt.
384 (unordered_map<>::insert_or_assign): Adapt.
385
61f3b605
GA
3862020-05-27 Jonathan Wakely <jwakely@redhat.com>
387
388 PR libstdc++/95282
389 * include/bits/atomic_base.h (__atomic_impl::load): Add
390 cv-qualifiers to parameter so that _Tp is deduced as the
391 unqualified type.
392 * testsuite/29_atomics/atomic_float/95282.cc: New test.
393
3942020-05-27 Jonathan Wakely <jwakely@redhat.com>
395
396 PR libstdc++/95322
397 * include/std/ranges (transform_view::_Sentinel): Allow hidden
398 friends to work with _Iterator<true> and _Iterator<false>.
399 (join_view::_Sentinel): Likewise.
400 * testsuite/std/ranges/adaptors/95322.cc: New test.
401
4022020-05-27 Jonathan Wakely <jwakely@redhat.com>
403
404 PR libstdc++/94354
405 * include/bits/stl_iterator.h (reverse_iterator): Fix comparison
406 operators to use the correct operations on the underlying
407 iterators.
408 * testsuite/24_iterators/reverse_iterator/rel_ops.cc: New test.
409
4102020-05-27 Jonathan Wakely <jwakely@redhat.com>
411
412 * testsuite/18_support/comparisons/categories/zero_neg.cc: New test.
413
c3a4169b
GA
4142020-05-26 Patrick Palka <ppalka@redhat.com>
415
416 PR libstdc++/95322
417 * include/bits/stl_iterator.h (__detail::_Common_iter_proxy):
418 Remove and instead define it ...
419 (common_iterator::_Proxy): ... here.
420 (common_iterator::operator->): Use it.
421 * testsuite/24_iterators/common_iterator/2.cc: New test.
422 * testsuite/std/ranges/adaptors/95322.cc: New test.
423
a57aa111
PP
4242020-05-23 Patrick Palka <ppalka@redhat.com>
425
426 PR libstdc++/93978
427 * testsuite/std/ranges/adaptors/93978.cc: Add -Wall to
428 dg-additional-options. Avoid unused-but-set-variable warning.
429
988b853f
JW
4302020-05-23 Jonathan Wakely <jwakely@redhat.com>
431
3cb0c7cc
JW
432 PR libstdc++/95289
433 * include/debug/helper_functions.h (__get_distance): Only declare
434 as a constexpr function for C++14 and up.
435 * testsuite/25_algorithms/copy/debug/95289.cc: New test.
436
584d52b0
JW
437 * include/bits/fs_path.h (__detail::_S_range_begin)
438 (__detail::_S_range_end, path::_S_string_from_iter): Replace with
439 overloaded function template __detail::__effective_range.
440 (__detail::__effective_range): New overloaded function template to
441 create a basic_string or basic_string_view for an effective range.
442 (__detail::__value_type_is_char): Use __detail::__effective_range.
443 Do not use remove_const on value type.
444 (__detail::__value_type_is_char_or_char8_t): Likewise.
445 (path::path(const Source&, format))
446 (path::path(const Source&, const locale&))
447 (path::operator/=(const Source&), path::append(const Source&))
448 (path::concat(const Source&)): Use __detail::__effective_range.
449 (path::_S_to_string(InputIterator, InputIterator)): New function
450 template to create a string view if possible, or string otherwise.
451 (path::_S_convert): Add overloads that convert a string returned
452 by __detail::__effective_range. Use if-constexpr to inline conversion
453 logic from all overloads of _Cvt::_S_convert.
454 (path::_S_convert_loc): Add overload that converts a string. Use
455 _S_to_string to avoid allocation when possible.
456 (path::_Cvt): Remove.
457 (path::operator+=(CharT)): Remove indirection through path::concat.
458 * include/experimental/bits/fs_path.h (path::_S_convert_loc): Add
459 overload for non-const pointers, to avoid constructing a std::string.
460 * src/c++17/fs_path.cc (path::_S_convert_loc): Replace conditional
461 compilation with call to _S_convert.
462
00c8f2a5
JW
463 * include/bits/fs_path.h (__detail::_S_range_begin)
464 (__detail::_S_range_end): Remove unintentional static specifiers.
465 * include/experimental/bits/fs_path.h (__detail::_S_range_begin)
466 (__detail::_S_range_end): Likewise.
467
988b853f
JW
468 * include/bits/fs_path.h (filesystem::__detail::__is_encoded_char):
469 Replace alias template with variable template. Don't remove const.
470 (filesystem::__detail::__is_path_src): Replace overloaded function
471 template with variable template and specializations.
472 (filesystem::__detail::__is_path_iter_src): Replace alias template
473 with class template.
474 (filesystem::__detail::_Path): Use __is_path_src. Remove support for
475 iterator pairs.
476 (filesystem::__detail::_Path2): New alias template for checking
477 InputIterator requirements.
478 (filesystem::__detail::__constructible_from): Remove.
479 (filesystem::path): Replace _Path<Iter, Iter> with _Path2<Iter>.
480 * testsuite/27_io/filesystem/path/construct/80762.cc: Check with two
481 constructor arguments of void and void* types.
482
bc7a4f2f
MK
4832020-05-21 Matthias Kretz <kretz@kde.org>
484
485 * testsuite/Makefile.am: Remove dup target_triplet and set tool,
486 allowing runtest to work without arguments.
487 * testsuite/Makefile.in: Regenerate.
488
f26e72d8
JW
4892020-05-21 Jonathan Wakely <jwakely@redhat.com>
490
f094665d
JW
491 PR libstdc++/93983
492 * include/bits/iterator_concepts.h (__detail::__cpp17_iterator):
493 Reorder constraints to avoid recursion when constructors use
494 iterator_traits (LWG 3420).
495 * testsuite/24_iterators/customization_points/lwg3420.cc: New test.
496
0a1baad8
JW
497 * include/experimental/socket (basic_socket::is_open()
498 (basic_socket_acceptor::is_open()): Use _GLIBCXX_NODISCARD macro.
499
b780db2e
JW
500 * include/experimental/bits/net.h (__endpoint, __protocol)
501 (__acceptable_protocol, __inet_protocol): New concepts.
502 (__detail::__is_endpoint): Move trait from <experimental/socket>.
503 (__is_protocol, __is_acceptable_protocol, __is_inet_protocol): New
504 traits.
505 (__endpoint, __protocol, __acceptable_protocol): New variable
506 templates.
507 * include/experimental/socket (__is_endpoint): Move to net.h header.
508 (basic_socket, basic_socket_acceptor): Check requirements.
509
d9d34449
JW
510 * include/experimental/executor (use_future_t::use_future_t()): Fix
511 incorrect noexcept-specifier.
512 * include/experimental/internet (basic_resolver_results): Adjust
513 whitespace.
514 * include/experimental/socket (__basic_socket_impl::release): Add
515 member function.
516 (basic_socket(io_context&, const endpoint_type&)): Fix argument to
517 target constructor.
518 (basic_socket::release(), basic_socket::release(error_code&)): Add
519 missing member functions.
520 (basic_socket::is_open()): Add nodiscard attribute.
521 (basic_socket::close(error_code&)): Pass argument to base function.
522 (basic_socket_acceptor::release())
523 (basic_socket_acceptor::release(error_code&)): Add missing member
524 functions.
525 (basic_socket_acceptor::is_open()): Add nodiscard attribute.
526 (basic_socket_streambuf::error()): Add noexcept.
527 (basic_socket_iostream::error()): Likewise.
528 * testsuite/experimental/net/socket/basic_socket.cc: New test.
529
f26e72d8
JW
530 * include/experimental/buffer: Replace typedefs with
531 alias-declarations.
532 * include/experimental/executor: Likewise.
533 * include/experimental/internet: Likewise.
534 * include/experimental/socket: Likewise.
535 * include/experimental/timer: Likewise.
536
a2d196e7
JW
5372020-05-19 Jonathan Wakely <jwakely@redhat.com>
538
539 PR libstdc++/94087
540 * src/c++11/random.cc (__x86_rdseed): Allow fallback function to be
541 passed in.
542 (__x86_rdseed_rdrand): New function that uses rdseed with rdrand
543 fallback.
544 (random_device::_M_init): Use __x86_rdseed_rdrand when both
545 instructions are available.
546 * testsuite/26_numerics/random/random_device/94087.cc: New test.
547
864fed4a
PP
5482020-05-19 Patrick Palka <ppalka@redhat.com>
549
550 PR c++/66439
551 * testsuite/20_util/pair/astuple/get_neg.cc: Prune "type/value
552 mismatch" messages.
553 * testsuite/20_util/tuple/element_access/get_neg.cc: Likewise.
554
4c1a5d8b
L
5552020-05-15 H.J. Lu <hongjiu.lu@intel.com>
556
557 PR bootstrap/95147
558 * configure: Regenerated.
559
8d286dd1
L
5602020-05-14 H.J. Lu <hongjiu.lu@intel.com>
561
562 * configure: Regenerated.
563
88324653
AO
5642020-05-13 Alexandre Oliva <oliva@adacore.com>
565
566 PR libstdc++/77691
567 * include/experimental/memory_resource
568 (__resource_adaptor_imp::do_allocate): Handle max_align_t on
569 x86-vxworks as on x86-solaris.
570 (__resource_adaptor_imp::do_deallocate): Likewise.
571 * testsuite/experimental/memory_resource/new_delete_resource.cc:
572 Drop xfail.
573 (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris.
574 (test03): Drop max-align test for char-aligned alloc.
575
491ba663
UD
5762020-05-08 Ulrich Drepper <drepper@redhat.com>
577
578 * include/bits/atomic_base.h (atomic_flag): Implement test member
579 function.
580 * include/std/version: Define __cpp_lib_atomic_flag_test.
581 * testsuite/29_atomics/atomic_flag/test/explicit.cc: New file.
582 * testsuite/29_atomics/atomic_flag/test/implicit.cc: New file.
583
9c24e97a
JW
5842020-05-07 Jonathan Wakely <jwakely@redhat.com>
585
586 PR libstdc++/94971 (partial)
587 * include/bits/ranges_algo.h (ranges::__sample_fn): Qualify
588 std::sample using macro to work in parallel mode.
589 (__sort_fn): Likewise for std::sort.
590 (ranges::__nth_element_fn): Likewise for std::nth_element.
591 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
592 Likewise for std::__min_cmp.
593 * include/parallel/algobase.h (lexicographical_compare_three_way):
594 Add to namespace std::__parallel.
595
596 PR c/92472
597 * include/parallel/multiway_merge.h (_GuardedIterator::operator*)
598 (_GuardedIterator::operator _RAIter, _UnguardedIterator::operator*)
599 (_UnguardedIterator::operator _RAIter): Add const qualifier.
600 (operator<(_GuardedIterator&, _GuardedIterator&)
601 (operator<=(_GuardedIterator&, _GuardedIterator&)
602 (operator<(_UnguardedIterator&, _UnguardedIterator&)
603 (operator<=(_UnguardedIterator&, _UnguardedIterator&): Change
604 parameters to const references.
605
359b19e9
EB
6062020-05-07 Eric Botcazou <ebotcazou@adacore.com>
607
608 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
609 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
610
72a54e5e
FD
6112020-05-06 François Dumont <fdumont@gcc.gnu.org>
612
91d50549
JW
613 * include/bits/stl_algobase.h (struct _Bit_iterator): New declaration.
614 (std::__fill_a1(_Bit_iterator, _Bit_iterator, const bool&)): Likewise.
615 * include/bits/stl_bvector.h (__fill_bvector): Move outside
616 _GLIBCXX_STD_C namespace.
617 (fill(_Bit_iterator, _Bit_iterator, const bool&)): Likewise and rename
618 into...
619 (__fill_a1): ...this.
620 * testsuite/25_algorithms/fill/bvector/1.cc: New.
72a54e5e 621
a3f1fc06
L
6222020-05-06 H.J. Lu <hongjiu.lu@intel.com>
623
624 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
625
093d95fe
RO
6262020-05-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
627
628 * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
629 * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
630 Likewise.
631 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
632 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
633 Likewise.
634
6208287f
ML
6352020-05-06 Martin Liska <mliska@suse.cz>
636
637 Revert:
638 2020-05-05 Martin Liska <mliska@suse.cz>
639 PR c/92472
640 * include/parallel/multiway_merge.h:
641 Use const for _Compare template argument.
642
2b6f6aee
JW
6432020-05-06 Jonathan Wakely <jwakely@redhat.com>
644
645 * doc/xml/manual/abi.xml (abi.versioning.history): Document library
646 versions for GCC 9.[123] and 10.1 releases.
647 * doc/html/*: Regenerate.
648
19d42220
JJ
6492020-05-06 Jakub Jelinek <jakub@redhat.com>
650
651 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
652 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
653 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
654 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
655 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
656 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
657 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
658
af2311ab
ML
6592020-05-05 Martin Liska <mliska@suse.cz>
660
661 PR c/92472
662 * include/parallel/multiway_merge.h:
663 Use const for _Compare template argument.
664
1405ed43
FS
6652020-05-04 Fangrui Song <maskray@google.com>
666
667 * libsupc++/cxxabi.h (__cxa_finalize): Fix return type.
668
bb27781b
JW
6692020-05-04 Jonathan Wakely <jwakely@redhat.com>
670
ae8a08ff
JW
671 * doc/xml/faq.xml: Use working link for SGI STL FAQ.
672 * doc/html/*: Regenerate.
673
bb27781b
JW
674 PR libstdc++/94906
675 * src/c++17/memory_resource.cc
676 (monotonic_buffer_resource::_Chunk::release): Use size_t for shift
677 operands.
678
e6b31fc7
NS
6792020-05-04 Nathan Sidwell <nathan@acm.org>
680
681 PR libstdc++/94747
682 * libsupc++/dyncast.cc (__dynamic_cast): Cast offsetof to
683 ptrdiff_t before negation, to show intent more clearly.
684
ec40967f
JW
6852020-05-04 Jonathan Wakely <jwakely@redhat.com>
686
687 PR libstdc++/94936
688 * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools):
689 Add comment about single-threaded behaviour.
690 (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist
691 class member access out of loop.
692 (synchronized_pool_resource::synchronized_pool_resource())
693 (synchronized_pool_resource::~synchronized_pool_resource())
694 (synchronized_pool_resource::release()): Check __gthread_active_p
695 before creating and/or deleting the thread-specific data key.
696 (synchronized_pool_resource::_M_thread_specific_pools()): Adjust
697 assertions.
698 (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast
699 path for single-threaded case.
700 (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)):
701 Likewise. Return if unable to find a pool that owns the allocation.
702 * testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
703 New test.
704 * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New
705 test.
706 * testsuite/20_util/synchronized_pool_resource/release_single.cc: New
707 test.
708
22b6b5d6
JW
7092020-05-03 Jonathan Wakely <jwakely@redhat.com>
710
711 PR libstdc++/94933
712 * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types
713 usable in constant expressions.
714 * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and
715 non-scalars.
716
187c854c
JW
7172020-05-01 Jonathan Wakely <jwakely@redhat.com>
718
719 PR libstdc++/94901
720 * testsuite/17_intro/badnames.cc: Test values between _E9 and _E24 too.
721
a5f2fb1f
JW
7222020-05-01 Jonathan Wakely <jwakely@redhat.com>
723 Patrick Palka <ppalka@redhat.com>
724
725 PR libstdc++/92894
726 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove):
727 Add trait to determine return type and an alias for it.
728 (ranges::__cust_imove::_IMove::operator()): Use __result instead of
729 deduced return type.
730 (iter_rvalue_reference_t): Use _IMove::__type instead of checking
731 the result of ranges::iter_move.
732 (__detail::__indirectly_readable_impl): Use iter_rvalue_reference_t
733 instead of checking the result of ranges::iter_move.
734 * testsuite/24_iterators/customization_points/92894.cc: New test.
735 * testsuite/24_iterators/indirect_callable/92894.cc: New test.
736
070b4df8
JW
7372020-05-01 Jonathan Wakely <jwakely@redhat.com>
738
739 PR libstdc++/94901
740 * include/std/type_traits (__is_complete_or_unbounded): Replace
741 BADNAME _T with _Tp.
742 * testsuite/17_intro/badnames.cc: New test.
743
b1983f45
JW
7442020-04-30 Jonathan Wakely <jwakely@redhat.com>
745
746 PR libstdc++/89510
747 * include/bits/alloc_traits.h (allocator_traits::_S_construct)
748 (allocator_traits::_S_destroy)
749 (allocator_traits<allocator<T>>::construct): Use traits in
750 noexcept-specifiers.
751 * include/bits/allocator.h (allocator<void>::construct)
752 (allocator<void>::destroy): Likewise.
753 * include/ext/malloc_allocator.h (malloc_allocator::construct)
754 (malloc_allocator::destroy): Likewise.
755 * include/ext/new_allocator.h (new_allocator::construct)
756 (new_allocator::destroy): Likewise.
757 * testsuite/20_util/allocator/89510.cc: New test.
758 * testsuite/ext/malloc_allocator/89510.cc: New test.
759 * testsuite/ext/new_allocator/89510.cc: New test.
760
8f159176
JW
7612020-04-29 Jonathan Wakely <jwakely@redhat.com>
762
763 PR libstdc++/94854
764 * include/bits/basic_string.tcc: Update comment about explicit
765 instantiations.
766
162c40a4
JW
7672020-04-28 Jonathan Wakely <jwakely@redhat.com>
768
d0330a03
JW
769 PR libstdc++/91480
770 * include/bits/allocator.h (__cpp_lib_allocator_is_always_equal):
771 Remove non-standard macro.
772 * include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define
773 to indicate P1032R1 support.
774 * include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise.
775 * include/std/string_view (__cpp_lib_constexpr_string_view): Likewise.
776 * include/std/tuple (__cpp_lib_constexpr_tuple): Likewise.
777 * include/std/version (__cpp_lib_allocator_is_always_equal): Remove.
778 (__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view)
779 (__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define.
780 * testsuite/20_util/function_objects/constexpr_searcher.cc: Check
781 feature test macro.
782 * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise.
783 * testsuite/21_strings/basic_string_view/operations/copy/char/
784 constexpr.cc: Likewise.
785 * testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise.
786
162c40a4
JW
787 PR libstdc++/94831
788 * include/bits/alloc_traits.h (_S_construct): Restore placement
789 new-expression for C++11/14/17 and call std::construct_at directly
790 for C++20.
791 * include/bits/stl_construct.h (_Construct): Revert to non-constexpr
792 function returning void.
793 * testsuite/20_util/specialized_algorithms/
794 uninitialized_value_construct/94831.cc: New test.
795 * testsuite/23_containers/vector/cons/94831.cc: New test.
796
19667c82
PP
7972020-04-28 Patrick Palka <ppalka@redhat.com>
798
799 LWG 3433 subrange::advance(n) has UB when n < 0
800 * include/std/ranges (subrange::prev): Fix typo.
801 (subrange::advance): Handle a negative argument as per the proposed
802 resolution of LWG 3433.
803 * testsuite/std/ranges/subrange/lwg3433.cc: New test.
804
b9c91b7f
IS
8052020-04-28 Jonathan Wakely <jwakely@redhat.com>
806 Iain Sandoe <iain@sandoe.co.uk>
807
808 PR c++/94759
809 * include/std/coroutine: Implement handing for non-
810 class coroutine return types.
811
00082ff8
JW
8122020-04-24 Jonathan Wakely <jwakely@redhat.com>
813
814 * include/experimental/executor (service_already_exists): Make default
815 constructor public (LWG 3414).
816 * testsuite/experimental/net/execution_context/make_service.cc: Check
817 the service_already_exists can be default constructed.
818
d1462b07
JW
8192020-04-24 Kamlesh Kumar <kamleshbhalui@gmail.com>
820 Jonathan Wakely <jwakely@redhat.com>
821
822 PR libstdc++/90415
823 PR libstdc++/92156
824 * include/std/any (any): Rename template parameters for consistency
825 with the standard.
826 (any::_Decay): Rename to _Decay_if_not_any.
827 (any::any(T&&):: Remove is_constructible from constraints. Remove
828 non-standard overload.
829 (any::any(in_place_type_t<T>, Args&&...))
830 (any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
831 (any::emplace(Args&&...))
832 (any::emplace(initializer_list<U>, Args&&...)):
833 Use decay_t instead of _Decay.
834 * testsuite/20_util/any/cons/90415.cc: New test.
835 * testsuite/20_util/any/cons/92156.cc: New Test.
836 * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives
837 more robust.
838 * testsuite/20_util/any/modifiers/92156.cc: New test.
839
a2dcb56c
JW
8402020-04-23 Jonathan Wakely <jwakely@redhat.com>
841
be0363c8
JW
842 * doc/xml/manual/status_cxx2020.xml: Update C++20 status table.
843 * doc/html/*: Regenerate.
844
40541efe
JW
845 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert
846 value for C++17 to 201803L because P0858R0 is supported for C++17.
847 * include/std/version (__cpp_lib_array_constexpr): Likewise.
848 * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
849 Check for value corresponding to P0031R0 features being tested.
850 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
851 Check for value corresponding to P0858R0 features being tested.
852
a2dcb56c
JW
853 * include/std/version (__cpp_lib_three_way_comparison): Define for
854 freestanding builds.
855
8c9d69ba
TR
8562020-04-23 Thomas Rodgers <rodgert@appliantology.com>
857
858 * include/experimental/net/executor (system_context): Mark
859 system_context::system_context() = delete.
860 * testsuite/experimental/net/executor/1.cc: Add new
861 test to check system_context is not default constructible.
862
dcf69ac5
IS
8632020-04-23 Iain Sandoe <iain@sandoe.co.uk>
864
865 * include/std/coroutine: Update the inline namespace to __n4861.
866 Add the __cpp_lib_coroutine define, set to 201902L.
867 * include/std/version: Add __cpp_lib_coroutine, set to 201902L.
868
0fe9eaaa
JW
8692020-04-22 Jonathan Wakely <jwakely@redhat.com>
870
aac39307
JW
871 * include/std/execution (__cpp_lib_execution): Define to indicate
872 support for P0024R2 and P1001R2.
873 * include/std/version (__cpp_lib_execution): Define.
874 * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro
875 defined by <algorithm>, move other tests to new tests ...
876 * testsuite/25_algorithms/pstl/feature_test-2.cc: New test.
877 * testsuite/25_algorithms/pstl/feature_test-3.cc: New test.
878 * testsuite/25_algorithms/pstl/feature_test-4.cc: New test.
879 * testsuite/25_algorithms/pstl/feature_test-5.cc: New test.
880
e851aa17
JW
881 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define
882 different values for C++17 and C++20, to indicate different feature
883 sets. Update value for C++20 to indicate P1032R1 support.
884 * include/std/version (__cpp_lib_array_constexpr): Likewise.
885 * testsuite/23_containers/array/comparison_operators/constexpr.cc:
886 Check feature test macro.
887 * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
888 New test.
889 * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check
890 feature test macro.
891 * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test
892 in C++17 mode and check feature test macro.
893
2025db69
JW
894 * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define
895 here.
896 * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be
897 defined by <utility>.
898
c9313582
JW
899 * include/std/functional (__cpp_lib_concepts): Update macro value to
900 indicate P1964R2 support.
901 * include/std/version (__cpp_lib_concepts): Likewise.
902 * testsuite/std/concepts/1.cc: Adjust expected value.
903 * testsuite/std/concepts/2.cc: Likewise.
904
eca477d1
JW
905 * include/std/functional (__cpp_lib_constexpr_invoke): Rename to
906 __cpp_lib_constexpr_functional.
907 * include/std/version (__cpp_lib_constexpr_invoke): Likewise.
908 * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust.
909
56772f62
JW
910 * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to
911 indicate P1006R1 support.
912 (__cpp_lib_to_address): Define to indicate P0653R2 support.
913 * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate
914 P1227R2 support.
915 * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate
916 P0769R2 support.
917 * include/std/atomic (__cpp_lib_atomic_float): Define to indicate
918 P0020R6 support.
919 * include/std/memory (__cpp_lib_assume_aligned): Define to indicate
920 P1007R3 support.
921 * include/std/memory_resource (__cpp_lib_polymorphic_allocator):
922 Define to indicate P0339R6 support.
923 * include/std/string_view (__cpp_lib_starts_ends_with): Define to
924 indicate P0457R2 support.
925 * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define
926 to indicate P0758R1 support.
927 (__cpp_lib_remove_cvref): Define to indicate P0550R2 support.
928 (__cpp_lib_type_identity): Define to indicate P0887R1 support.
929 * include/std/version (__cpp_lib_atomic_float)
930 (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref)
931 (__cpp_lib_type_identity, __cpp_lib_assume_aligned)
932 (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator)
933 (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with)
934 (__cpp_lib_to_address): Define.
935 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
936
0d2dbae4
JW
937 * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old
938 macro.
939 * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion):
940 Likewise.
941 * include/std/version (__cpp_lib_map_insertion)
942 (__cpp_lib_unordered_map_insertion): Remove.
943
aa12ab2e
JW
944 * include/std/condition_variable (__cpp_lib_jthread): Remove
945 redundant definition.
946 * include/std/stop_token (__cpp_lib_jthread): Update macro value to
947 indicate P1869R1 support.
948 * include/std/version (__cpp_lib_jthread): Update value.
949 * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check
950 for updated macro value.
951 * testsuite/30_threads/condition_variable_any/stop_token/2.cc:
952 Likewise.
953 * testsuite/30_threads/jthread/1.cc: Likewise.
954 * testsuite/30_threads/jthread/2.cc: Likewise.
955 * testsuite/30_threads/stop_token/1.cc: Likewise.
956 * testsuite/30_threads/stop_token/2.cc: Likewise.
957
0fe9eaaa
JW
958 * testsuite/21_strings/basic_string/erasure.cc: Check for
959 __cpp_lib_erase_if macro.
960 * testsuite/23_containers/deque/erasure.cc: Add header name to #error
961 messages.
962 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
963 * testsuite/23_containers/list/erasure.cc: Likewise.
964 * testsuite/23_containers/map/erasure.cc: Likewise.
965 * testsuite/23_containers/set/erasure.cc: Likewise.
966 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
967 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
968 * testsuite/23_containers/vector/erasure.cc: Likewise.
969
d76925e4
JW
9702020-04-21 Jonathan Wakely <jwakely@redhat.com>
971
87841658
JW
972 * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way
973 to define operator<=>.
974 * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test.
975
57ede05c
JW
976 * doc/Makefile.am (xml_sources_manual): Add missing XML files.
977 * doc/Makefile.in: Regenerate.
978 * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead
979 of "this page".
980 * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections
981 to the C++11 status table.
982 * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature
983 proposals with table matching contents of the C++14 standard.
984 * doc/xml/manual/status_cxx2017.xml: Add table matching contents of
985 the C++17 standard.
986 * doc/html/*: Regenerate.
987
d76925e4
JW
988 PR c++/94149
989 * include/std/type_traits (__is_nt_constructible_impl): Add partial
990 specializations for bounded arrays with non-empty initializers.
991 * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test.
992
b90ff7a2
TR
9932020-04-20 Thomas Rodgers <trodgers@redhat.com>
994
995 * testsuite/lib/libstdc++.exp: Add additional_flags=
996 -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when
997 compiling with a newer Thread Building Blocks.
998
93843da6
JW
9992020-04-20 Jonathan Wakely <jwakely@redhat.com>
1000
86119f14
JW
1001 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
1002
0ea89b15
JW
1003 * testsuite/20_util/is_constructible/51185.cc: Make test class a
1004 non-aggregate so that the test verifies the same thing in all -std
1005 modes.
1006 * testsuite/20_util/is_constructible/value-2.cc: Adjust expected
1007 results for some types when paren-init for aggregates is supported.
1008
73a0a21d
JW
1009 * include/std/version (__cpp_lib_three_way_comparison): Update value.
1010 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
b0146791 1011 (__detail::__synth3way): Add noexcept-specifier.
73a0a21d 1012
93843da6
JW
1013 * include/bits/stl_map.h (map): Define operator<=> and remove
1014 operator< for C++20.
1015 * include/bits/stl_multimap.h (multimap): Likewise.
1016 * include/bits/stl_multiset.h (multiset): Likewise.
1017 * include/bits/stl_set.h (set): Likewise.
1018 * include/bits/stl_tree.h (_Rb_tree): Likewise.
1019 (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
1020 operator!= for C++20.
1021 * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
1022 * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
1023 * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
1024 * include/debug/set.h (__gnu_debug::set): Likewise.
1025 * testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
1026 * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
1027 * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
1028 * testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
1029
697b94cf
MK
10302020-04-20 Matthias Kretz <kretz@kde.org>
1031
1032 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
1033
a2c0fa35
JW
10342020-04-19 Jonathan Wakely <jwakely@redhat.com>
1035
717e91db
JW
1036 * include/bits/stl_queue.h (queue): Define operator<=> for C++20.
1037 * include/bits/stl_stack.h (stack): Likewise.
1038 * testsuite/23_containers/queue/cmp_c++20.cc: New test.
1039 * testsuite/23_containers/stack/cmp_c++20.cc: New test.
1040
7ab9c243
JW
1041 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
1042 Remove redundant operator!= for C++20.
1043 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
1044 Likewise.
1045 * include/debug/unordered_map (unordered_map, unordered_multimap):
1046 Likewise.
1047 * include/debug/unordered_set (unordered_set, unordered_multiset):
1048 Likewise.
1049
a2c0fa35
JW
1050 PR other/94629
1051 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix
1052 redundant assignment in constructor.
1053
c9960294
JW
10542020-04-18 Jonathan Wakely <jwakely@redhat.com>
1055
27c17177
JW
1056 * include/std/chrono (duration, time_point): Define operator<=> and
1057 remove redundant operator!= for C++20.
1058 * testsuite/20_util/duration/comparison_operators/three_way.cc: New
1059 test.
1060 * testsuite/20_util/time_point/comparison_operators/three_way.cc: New
1061 test.
1062
c9960294
JW
1063 * testsuite/util/native_type/native_priority_queue.hpp: Use
1064 allocator_traits to rebind allocator.
1065
875d6cb3
JW
10662020-04-17 Jonathan Wakely <jwakely@redhat.com>
1067
bd2420f8
JW
1068 * include/bits/forward_list.h (forward_list): Define operator<=> and
1069 remove redundant comparison operators for C++20.
1070 * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
1071 * include/bits/stl_deque.h (deque): Likewise.
1072 * include/bits/stl_iterator.h (__normal_iterator): Likewise.
1073 * include/bits/stl_list.h (list): Likewise.
1074 * include/bits/stl_vector.h (vector): Likewise.
1075 * include/debug/deque (__gnu_debug::deque): Likewise.
1076 * include/debug/forward_list (__gnu_debug::forward_list): Likewise.
1077 * include/debug/list (__gnu_debug::list): Likewise.
1078 * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
1079 Likewise.
1080 * include/debug/vector (__gnu_debug::vector): Likewise.
1081 * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
1082 operator<=> for C++20.
1083 * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
1084 * testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
1085 * testsuite/23_containers/list/cmp_c++20.cc: New test.
1086 * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
1087 * testsuite/23_containers/vector/cmp_c++20.cc: New test.
1088
875d6cb3
JW
1089 * include/bits/basic_string.h (basic_string): Define operator<=> and
1090 remove redundant comparison operators for C++20.
1091 * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
1092 Add comparison_category members.
1093 (__detail::__char_traits_cmp_cat): New helper to get comparison
1094 category from char traits class.
1095 * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
1096 define for C++20.
1097 (sub_match): Define operator<=> and remove redundant comparison
1098 operators for C++20.
1099 (match_results): Remove redundant operator!= for C++20.
1100 * include/std/string_view (basic_string_view): Define operator<=> and
1101 remove redundant comparison operators for C++20.
1102 * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
1103 test.
1104 * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
1105 New test.
1106 * testsuite/21_strings/basic_string_view/operations/copy/char/
1107 constexpr.cc: Initialize variable.
1108 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
1109 constexpr.cc: Likewise.
1110 * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
1111 dg-do directive and remove comments showing incorrect signatures.
1112 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
1113 Likewise.
1114 * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
1115 New test.
1116 * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
1117 New test.
1118 * testsuite/28_regex/sub_match/compare_c++20.cc: New test.
1119
c8d88bf2
JW
11202020-04-16 Jonathan Wakely <jwakely@redhat.com>
1121
1122 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
1123 name of unused parameter.
1124
4714fd14
JW
11252020-04-15 Jonathan Wakely <jwakely@redhat.com>
1126
d43919bf
JW
1127 * include/bits/fs_dir.h (file_status): Define operator== for C++20.
1128 (directory_entry): Define operator<=> and remove redundant comparison
1129 operators for C++20.
1130 * include/bits/fs_fwd.h (space_info): Define operator== for C++20.
1131 * include/bits/fs_path.h (path): Define operator<=> and remove
1132 redundant comparison operators for C++20.
1133 * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
1134 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
1135 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
1136 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
1137
596676d6
JW
1138 * include/bits/allocator.h (operator!=): Do not define for C++20.
1139 * include/bits/locale_classes.h (operator!=): Likewise.
1140 * include/bits/std_function.h (operator==(nullptr_t, const function&))
1141 (operator!=(const function&, nullptr_t))
1142 (operator!=(nullptr_t, const function&)): Likewise.
1143 * include/ext/bitmap_allocator.h (operator!=): Likewise.
1144 * include/ext/debug_allocator.h (operator!=): Likewise.
1145 * include/ext/extptr_allocator.h (operator!=): Likewise.
1146 * include/ext/malloc_allocator.h (operator!=): Likewise.
1147 * include/ext/mt_allocator.h (operator!=): Likewise.
1148 * include/ext/new_allocator.h (operator!=): Likewise.
1149 * include/ext/pool_allocator.h (operator!=): Likewise.
1150 * include/ext/throw_allocator.h (operator!=): Likewise.
1151 * include/std/bitset (bitset::operator!=): Likewise.
1152 * include/std/memory_resource (operator!=): Likewise.
1153 * include/std/scoped_allocator (operator!=): Likewise.
1154
4714fd14
JW
1155 * include/std/typeindex (operator<=>): Define for C++20.
1156 * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
1157
597601aa
JW
11582020-04-14 Jonathan Wakely <jwakely@redhat.com>
1159
e1e9e8d7
JW
1160 * libsupc++/compare (compare_three_way): Fix constraint so that
1161 BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
1162 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
1163 New test.
1164
f5fa62ed
JW
1165 PR libstdc++/94562
1166 * include/bits/shared_ptr.h (operator<=>): Define for C++20.
1167 * include/bits/shared_ptr_base.h (operator<=>): Likewise.
1168 * include/bits/unique_ptr.h (operator<=>): Add inline specifier.
1169 * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
1170 * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
1171 std::less<A*> to be used when comparing std::shared_ptr<A> objects in
1172 C++20.
1173
597601aa
JW
1174 PR libstdc++/94565
1175 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
1176 * testsuite/18_support/comparisons/categories/94565.cc: New test.
1177
fa9a57ed
JW
11782020-04-13 Iain Sandoe <iain@sandoe.co.uk>
1179
1180 * include/std/coroutine: Update coroutines builtin define,
1181 per n4861.
1182
5b074864
JW
11832020-04-09 Jonathan Wakely <jwakely@redhat.com>
1184
3fd1c229
JW
1185 * libsupc++/compare (compare_three_way): Fix noexcept-specifier.
1186 (strong_order, weak_order, partial_order): Replace uses of <=> with
1187 compare_three_way function object (LWG 3324).
1188 * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
1189 equality operator so that X satisfies three_way_comparable.
1190 * testsuite/18_support/comparisons/algorithms/strong_order.cc:
1191 Likewise.
1192 * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
1193
5b074864
JW
1194 * include/bits/unique_ptr.h (operator<=>): Define for C++20.
1195 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
1196 * testsuite/20_util/default_delete/void_neg.cc: Likewise.
1197 * testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
1198 * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
1199
e18cd376
JW
12002020-04-08 Jonathan Wakely <jwakely@redhat.com>
1201
ef389dad
JW
1202 * include/bits/slice_array.h (operator==(const slice&, const slice&)):
1203 Define for C++20.
1204 * include/std/complex (operator==(const T&, const complex<T>&))
1205 (operator!=(const complex<T>&, const complex<T>&))
1206 (operator!=(const complex<T>&, const T&))
1207 (operator!=(const T&, const complex<T>&)): Do not declare for C++20.
1208 * testsuite/26_numerics/slice/compare.cc: New test.
1209
e18cd376
JW
1210 * include/std/charconv (to_chars_result, from_chars_result): Add
1211 defaulted equality comparisons for C++20.
1212 * testsuite/20_util/from_chars/compare.cc: New test.
1213 * testsuite/20_util/to_chars/compare.cc: New test.
1214
c104e8f1
JW
12152020-04-07 Jonathan Wakely <jwakely@redhat.com>
1216
1217 PR libstdc++/94520
1218 * include/std/charconv (__integer_to_chars_result_type)
1219 (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
1220 allow use in C++14.
1221 * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
1222 use of std::string_view with std::string.
1223 * testsuite/20_util/from_chars/2.cc: Likewise.
1224 * testsuite/20_util/to_chars/1.cc: Likewise.
1225 * testsuite/20_util/to_chars/2.cc: Likewise.
1226
b6966987
JW
12272020-04-06 Jonathan Wakely <jwakely@redhat.com>
1228
1229 PR libstdc++/94498
1230 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
1231 usable in constant expressions for C++20.
1232 (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
1233 _GLIBCXX20_CONSTEXPR.
1234 (std::char_traits<char>, std::char_traits<wchar_t>)
1235 (std::char_traits<char8_t>): Make move, copy and assign usable in
1236 constant expressions for C++20.
1237 (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
1238 and copy usable in constant expressions for C++20.
1239 * include/std/string_view (basic_string_view::copy): Add
1240 _GLIBCXX20_CONSTEXPR.
1241 * testsuite/21_strings/basic_string_view/operations/copy/char/
1242 constexpr.cc: New test.
1243 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
1244 constexpr.cc: New test.
1245
2a1a0c8c
GP
12462020-04-05 Gerald Pfeifer <gerald@pfeifer.com>
1247
1248 * doc/xml/manual/appendix_contributing.xml: Refer to Git
1249 documentation instead of Subversion. Switch to https.
1250 * doc/html/manual/appendix_contributing.html: Regenerate.
1251
24fe8c8e
JW
12522020-04-03 Jonathan Wakely <jwakely@redhat.com>
1253
1254 PR libstdc++/93960
1255 * include/bits/ptr_traits.h (__to_address): Add special case for debug
1256 iterators, to avoid dereferenceable check.
1257 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
1258 * testsuite/20_util/to_address/debug.cc: New test.
1259
c1effaa2
AC
12602020-04-01 Andrea Corallo <andrea.corallo@arm.com>
1261
1262 * testsuite/experimental/net/execution_context/use_service.cc:
1263 Require pthread and gthreads.
1264
6c557ba5
GP
12652020-04-01 Gerald Pfeifer <gerald@pfeifer.com>
1266
1267 * doc/xml/manual/appendix_free.xml: Move "free books" list from
1268 fsf.org to gnu.org.
1269 * doc/html/manual/appendix_free.html: Regenerate.
1270
e06cde87
VV
12712020-03-31 Ville Voutilainen <ville.voutilainen@gmail.com>
1272
1273 Library-side tests for parenthesized aggregate init
1274
1275 PR c++/92878
1276 PR c++/92947
1277
1278 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
1279 * testsuite/20_util/any/assign/92878_92947.cc: Likewise.
1280 * testsuite/20_util/any/cons/92878_92947.cc: Likewise.
1281 * testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
1282 * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
1283 * testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
1284 * testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
1285 * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
1286 * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
1287 Likewise.
1288 * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
1289 * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
1290 * testsuite/20_util/variant/92878_92947.cc: Likewise.
1291 * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
1292 Likewise.
1293 * testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
1294 Likewise.
1295 * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
1296 Likewise.
1297 * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
1298 Likewise.
1299 * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
1300 Likewise.
1301 * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
1302 Likewise.
1303 * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
1304 * testsuite/23_containers/queue/92878_92947.cc: Likewise.
1305 * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
1306 Likewise.
1307 * testsuite/23_containers/stack/92878_92947.cc: Likewise.
1308 * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
1309 Likewise.
1310 * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
1311 Likewise.
1312 * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
1313 Likewise.
1314 * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
1315 Likewise.
1316 * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
1317 Likewise.
1318
42cda3ba
JW
13192020-03-28 Jonathan Wakely <jwakely@redhat.com>
1320
f6b2b790
JW
1321 * testsuite/20_util/is_constructible/value-2.cc: Fix test to account
1322 for changes due to parenthesized aggregate-initialization in C++20.
1323 * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
1324 with std::chrono::sys_time in C++20.
1325
42cda3ba
JW
1326 * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
1327 to constrain C++20 versions of comparison operators. Fix backwards
1328 logic of relational operators.
1329 (move_iterator): Use requires-clause to constrain comparison operators
1330 in C++20. Do not declare non-standard same-type overloads for C++20.
1331 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
1332 of comparisons and check using greedy_ops type.
1333 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
1334 * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
1335 main function from compile-only test.
1336 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
1337
0302a2de
JW
13382020-03-27 Jonathan Wakely <jwakely@redhat.com>
1339
b8a28a06
JW
1340 * include/bits/range_cmp.h (__cpp_lib_ranges): Define.
1341 * include/bits/stl_iterator.h: Check value of __cpp_concepts so that
1342 C++20 concepts are required.
1343 * include/bits/stl_iterator_base_types.h: Likewise.
1344 * include/std/concepts: Likewise.
1345 * include/std/version: Likewise.
1346 * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
1347 macro.
1348
81a8d137
JW
1349 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
1350 (reverse_iterator::iterator_category): Define for C++20.
1351 (reverse_iterator): Define comparison operators correctly for C++20.
1352 (__normal_iterator): Add constraints to comparison operators for C++20.
1353 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
1354 overload for input iterators.
1355 (move_iterator): Add constraints to comparison operators for C++20.
1356 Define operator<=> for C++20.
1357 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
1358 * testsuite/24_iterators/move_iterator/move_only.cc: New test.
1359 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
1360 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
1361
ae6076b5
JW
1362 * include/bits/iterator_concepts.h (__detail::__decay_copy)
1363 (__detail::__member_begin, __detail::__adl_begin): Move here from
1364 <bits/range_access.h>.
1365 (__detail::__ranges_begin, __detail::__range_iter_t): Define.
1366 * bits/range_access.h (__cust_access::__decay_copy)
1367 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to
1368 <bits/iterator_concepts.h>.
1369 (ranges::iterator_t): Use __detail::__range_iter_t.
1370 * include/bits/stl_iterator.h (back_insert_iterator): Simplify
1371 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
1372 (front_insert_iterator): Likewise.
1373 (insert_iterator): Implement changes from P0896R4 for C++20.
1374 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
1375 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
1376 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
1377 for inclusion in synopsis_c++20.cc which expects different signatures
1378 for some function templates.
1379 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
1380
0302a2de
JW
1381 * include/std/type_traits (__is_array_convertible): Move definition
1382 to immediately after is_convertible.
1383
16948c54
JW
13842020-03-26 Jonathan Wakely <jwakely@redhat.com>
1385
1386 * include/std/chrono (chrono::days, chrono::weeks, chrono::years)
1387 (chrono::months, chrono::sys_days, chrono::local_t)
1388 (chrono::local_time, chrono::local_seconds, chrono::local_days):
1389 Define for C++20.
1390 (chrono::time_point): Add missing static assert.
1391 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
1392 * testsuite/std/time/clock/file/overview.cc: New test.
1393 * testsuite/std/time/clock/file/members.cc: New test.
1394 * testsuite/std/time/syn_c++20.cc: New test.
1395
9673d11e 13962020-03-25 Mike Crowe <mac@mcrowe.com>
bf1fc37b 1397
e3ef3719
JW
1398 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
1399 test.
1400 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
1401 test.
1402
9673d11e
JW
14032020-03-25 Jonathan Wakely <jwakely@redhat.com>
1404
bf1fc37b
JW
1405 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
1406 * include/std/chrono (filesystem::__file_clock): Here.
1407 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
1408 Define public member functions for C++20.
1409 (is_clock, is_clock_v): Define traits for C++20.
1410 * include/std/condition_variable (condition_variable::wait_until): Add
1411 check for valid clock.
1412 * include/std/future (_State_baseV2::wait_until): Likewise.
1413 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
1414 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
1415 Likewise.
1416 * include/std/thread (this_thread::sleep_until): Likewise.
1417 * testsuite/30_threads/condition_variable/members/2.cc: Qualify
1418 slow_clock with new namespace.
1419 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New
1420 test.
1421 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
1422 New test.
1423 * testsuite/30_threads/future/members/clock_neg.cc: New test.
1424 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
1425 Qualify slow_clock with new namespace.
1426 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/
1427 clock_neg.cc: New test.
1428 * testsuite/30_threads/shared_future/members/clock_neg.cc: New
1429 test.
1430 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
1431 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
1432 New test.
1433 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
1434 slow_clock with new namespace.
1435 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
1436 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
1437 test.
1438 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
1439 * testsuite/std/time/traits/is_clock.cc: New test.
1440 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
1441 namespace.
1442
9fc98511
JW
14432020-03-21 Jonathan Wakely <jwakely@redhat.com>
1444
a577c0c2
JW
1445 PR libstdc++/93245
1446 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
1447 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
1448 Improve test coverage.
1449
9fc98511
JW
1450 PR libstdc++/94242
1451 * include/bits/fs_path.h (path::_S_str_convert): Replace first
1452 parameter with basic_string_view so that strings with different
1453 allocators can be accepted.
1454 (path::generic_string<C,T,A>()): Use basic_string object that uses the
1455 right allocator type.
1456 * testsuite/27_io/filesystem/path/generic/94242.cc: New test.
1457 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
1458 test coverage.
1459
98f29f56
JW
14602020-03-18 Jonathan Wakely <jwakely@redhat.com>
1461
b3341826
JW
1462 PR libstdc++/94033
1463 * include/std/type_traits (__is_nt_default_constructible_atom): Remove.
1464 (__is_nt_default_constructible_impl): Remove.
1465 (__is_nothrow_default_constructible_impl): Remove.
1466 (__is_nt_constructible_impl): Add bool template parameter. Adjust
1467 partial specializations.
1468 (__is_nothrow_constructible_impl): Replace class template with alias
1469 template.
1470 (is_nothrow_default_constructible): Derive from alias template
1471 __is_nothrow_constructible_impl instead of
1472 __is_nothrow_default_constructible_impl.
1473 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
1474
e5de406f
JW
1475 * include/std/stop_token (stop_token::_Stop_state_ref): Define
1476 comparison operators explicitly if the compiler won't synthesize them.
1477
07522ae9
JW
1478 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
1479 __cpp_lib_concepts before using iter_reference_t.
1480 * include/bits/stream_iterator.h (istream_iterator): Check
1481 __cpp_lib_concepts before using default_sentinel_t.
1482 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
1483
98f29f56
JW
1484 PR libstdc++/94203
1485 * include/experimental/executor (executor::executor(Executor)): Call
1486 make_shared directly instead of _M_create. Create _Tgt1 object.
1487 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
1488 Call allocate_shared directly instead of _M_create. Create _Tgt2
1489 object.
1490 (executor::target_type): Add cast needed for new _Tgt interface.
1491 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
1492 (executor::_Tgt): Define the same interface whether RTTI is enabled or
1493 not.
1494 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use
1495 std::type_info in the interface.
1496 (executor::_Tgt::_M_func): Add data member.
1497 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
1498 (executor::_Tgt1::_S_func): Define function to access target without
1499 depending on RTTI.
1500 (executor::_M_create): Remove.
1501 (operator==, operator!=): Simplify comparisons for executor.
1502 * include/experimental/socket (is_error_code_enum<socket_errc>):
1503 Define specialization before use.
1504 * testsuite/experimental/net/executor/1.cc: New test.
1505
c62f5e6e
JW
15062020-03-16 Jonathan Wakely <jwakely@redhat.com>
1507
1508 PR libstdc++/94199
1509 * include/experimental/executor (service_already_exists): Add default
1510 constructor. Declare make_service to be a friend.
1511 * testsuite/experimental/net/execution_context/make_service.cc: New
1512 test.
1513
fcc443b9
JW
15142020-03-12 Jonathan Wakely <jwakely@redhat.com>
1515
1516 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
1517 a null pointer to functions with nonnull(1) attribute.
1518
8f0d8cd8
PP
15192020-03-11 Patrick Palka <ppalka@redhat.com>
1520
4512b7d8
PP
1521 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
1522 'address' -> 'std::__addressof'.
1523 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
1524 a non-forward input_range.
1525 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
1526 default constructor protected instead of deleted, like with
1527 input_iterator_wrapper.
1528 (test_range::iterator): Add comment explaining that this type is used
1529 only when the underlying wrapper is input_iterator_wrapper or
1530 output_iterator_wrapper. Remove delegating defaulted constructor so
1531 that the inherited default constructor is used instead.
1532
8f0d8cd8
PP
1533 LWG 3286 ranges::size is not required to be valid after a call to
1534 ranges::begin on an input range
1535 * include/std/ranges (subrange::subrange): Split single-argument
1536 constructor into two, one constrained by _S_store_size and another by
1537 !_S_store_size.
1538 (take_view::begin): Call size() before calling ranges::begin(_M_base).
1539 * testsuite/std/ranges/adaptors/lwg3286.cc: New test.
1540 * testsuite/std/ranges/subrange/lwg3286.cc: New test.
1541
3654d49d
JW
15422020-03-10 Jonathan Wakely <jwakely@redhat.com>
1543
0b7f1e24
JW
1544 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
1545 instead of _M_current.
1546 (split_view::_OuterIter::operator++): Likewise.
1547
cf0c3a45
JW
1548 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
1549 (transform_view::_Iterator::operator*): Add noexcept-specifier.
1550 (transform_view::_Iterator::iter_move): Inline __iter_move body here.
1551 (split_view::_OuterIter::__current): Add noexcept.
1552 (split_view::_InnerIter::__iter_swap): Remove.
1553 (split_view::_InnerIter::__iter_move): Remove.
1554 (split_view::_InnerIter::_M_i_current): New accessors.
1555 (split_view::_InnerIter::__at_end): Use _M_i_current().
1556 (split_view::_InnerIter::operator*): Likewise.
1557 (split_view::_InnerIter::operator++): Likewise.
1558 (iter_move(const _InnerIter&)): Likewise.
1559 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
1560 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
1561 for iter_move and iter_swap on split_view's inner iterator.
1562
c222eabc
JW
1563 PR c++/94117
1564 * include/std/ranges (ranges::transform_view::_Iterator::iter_move):
1565 Change expression in noexcept-specifier to match function body.
1566
3654d49d
JW
1567 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
1568 comment explaining multiple dg-do directives.
1569 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
1570 so test is run as well as compiled.
1571
ea182fe6
JW
15722020-03-09 Jonathan Wakely <jwakely@redhat.com>
1573
1574 PR libstdc++/94063
1575 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
1576 handle concatenations that change the type of the first component.
1577 (path::operator+=(basic_string_view<value_type>)): Likewise.
1578 * testsuite/27_io/filesystem/path/concat/94063.cc: New test.
1579
6d082cd9
PP
15802020-03-06 Patrick Palka <ppalka@redhat.com>
1581
6aa2ca21
PP
1582 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend
1583 join_view::_Sentinel<!_Const>.
1584 * testsuite/std/ranges/adaptors/join.cc: Augment test.
1585
6d082cd9
PP
1586 PR libstdc++/93978
1587 * include/bits/range_access.h (__cust_access::_Empty::operator()):
1588 Declare return type to be bool instead of auto.
1589 * testsuite/std/ranges/adaptors/93978.cc: New test.
1590
180eeeae
JW
15912020-03-06 Jonathan Wakely <jwakely@redhat.com>
1592
4cdcb2c9 1593 PR libstdc++/94069
b0815713
JW
1594 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
1595 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
1596 second argument to __glibcxx_rwlock_init.
1597 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
1598
180eeeae
JW
1599 PR libstdc++/93244
1600 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
1601 test to not fail due to PR 94063.
1602 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
1603 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
1604
28119fba
AK
16052020-03-06 Andreas Krebbel <krebbel@linux.ibm.com>
1606
1607 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
1608 would match ENOSYS.
1609
6a705283
JW
16102020-03-05 Jonathan Wakely <jwakely@redhat.com>
1611
9412b35a
JW
1612 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
1613 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
1614 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
1615 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
1616 for return value, and in comparison.
1617 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
1618
6a705283
JW
1619 PR libstdc++/94051
1620 * include/std/string_view: Include <bits/ostream_insert.h>.
1621 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
1622
94f7d7ec
JW
16232020-03-04 Jonathan Wakely <jwakely@redhat.com>
1624
1625 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
1626
05779e2c
PP
16272020-03-04 Patrick Palka <ppalka@redhat.com>
1628
712b182a
PP
1629 PR libstdc++/94017
1630 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
1631 condition for when to use memset, making sure to additionally check that
1632 the output pointer's value type is a non-volatile byte type. Instead of
1633 requiring that the fill type is a byte type, just require that it's an
1634 integral type.
1635 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
1636 New test.
1637 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
1638 New test.
1639 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
1640 blocked by PR 94017.
1641 * testsuite/25_algorithms/fill/94017.cc: New test.
1642 * testsuite/25_algorithms/fill_n/94017.cc: New test.
1643
144dfc68
PP
1644 LWG 3355 The memory algorithms should support move-only input iterators
1645 introduced by P1207
1646 * include/bits/ranges_uninitialized.h
1647 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
1648 to copy __ifirst, which could be a move-only input iterator. Use
1649 operator- instead of ranges::distance to compute distance from a sized
1650 sentinel.
1651 (__uninitialized_copy_n_fn::operator()): Likewise.
1652 (__uninitialized_move_fn::operator()): Likewise.
1653 (__uninitialized_move_n_fn::operator()): Likewise.
1654 (__uninitialized_destroy_fn::operator()): Use std::move to avoid
1655 attempting to copy __first.
1656 (__uninitialized_destroy_n_fn::operator()): Likewise.
1657 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
1658 Augment test.
1659 * .../specialized_algorithms/uninitialized_copy/constrained.cc:
1660 Likewise.
1661 * .../specialized_algorithms/uninitialized_move/constrained.cc:
1662 Likewise.
1663
26af9cd8
PP
1664 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
1665 protected instead of private.
1666 (test_sized_range_sized_sent): New.
1667
d6d4b339
PP
1668 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
1669 New testsuite iterator.
1670 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
1671 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
1672
05779e2c
PP
1673 * include/bits/ranges_uninitialized.h
1674 (uninitialized_copy_fn::operator()): Pass a reference type as the first
1675 argument to is_nothrow_assignable_v.
1676 (uninitialized_copy_fn::operator()): Likewise.
1677 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result
1678 with the input iterator stripped of its move_iterator.
1679 (uninitialized_move_n_fn::operator()): Likewise.
1680 (uninitialized_fill_fn::operator()): Pass a reference type as the first
1681 argument to is_nothrow_assignable_v.
1682 (uninitialized_fill_n_fn::operator()): Likewise.
1683
9b4f00dd
JW
16842020-03-03 Jonathan Wakely <jwakely@redhat.com>
1685
462f6c20
JW
1686 PR libstdc++/94013
1687 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
1688 traits to control when to use memmove and memcmp optimizations.
1689 (__is_nonvolatile_trivially_copyable): New helper trait.
1690 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
1691 use memcmp optimization with volatile data.
1692 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
1693 (__copy_or_move, __copy_or_move_backward): Use __memcpyable.
1694 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
1695 (__copy_move_backward_a2): Likewise.
1696 (__equal_aux1): Use __memcmpable.
1697 (__lexicographical_compare_aux): Do not use memcmp optimization with
1698 volatile data.
1699 * testsuite/25_algorithms/copy/94013.cc: New test.
1700 * testsuite/25_algorithms/copy_backward/94013.cc: New test.
1701 * testsuite/25_algorithms/equal/94013.cc: New test.
1702 * testsuite/25_algorithms/fill/94013.cc: New test.
1703 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
1704 * testsuite/25_algorithms/move/94013.cc: New test.
1705 * testsuite/25_algorithms/move_backward/94013.cc: New test.
1706
9b4f00dd
JW
1707 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
1708 Avoid redundant iterator comparisons (LWG 3410).
1709
5fad0003
JW
17102020-03-02 Jonathan Wakely <jwakely@redhat.com>
1711
d112e173
JW
1712 PR libstdc++/93972
1713 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to
1714 differ.
1715 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
1716
4c391563
JW
1717 * include/std/ranges (__detail::__maybe_empty_t): Rename to
1718 __maybe_present_t.
1719 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
1720
5fad0003
JW
1721 * include/bits/ranges_algo.h (shift_right): Add 'typename' to
1722 dependent type.
1723
fed76afb
L
17242020-03-01 H.J. Lu <hongjiu.lu@intel.com>
1725
1726 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
1727
bd55ce63
JDA
17282020-02-29 John David Anglin <danglin@gcc.gnu.org>
1729
566f544c
JDA
1730 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
1731 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
1732 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
1733 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
1734 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
1735
bd55ce63
JDA
1736 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
1737 Add libatomic option.
1738 * testsuite/30_threads/jthread/jthread.cc: Likewise.
1739
44c85722
FD
17402020-02-29 François Dumont <fdumont@gcc.gnu.org>
1741
1742 * include/bits/stl_algo.h
1743 (__find_if, __count_if, __is_permutation, std::is_permutation): Move...
1744 * include/bits/stl_algobase.h: ...here.
1745 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
1746
d4912dc7
JDA
17472020-02-29 John David Anglin <danglin@gcc.gnu.org>
1748
68a1a11f
JDA
1749 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
1750 option.
1751 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
1752 Likewise.
1753 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
1754 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
1755 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
1756 * testsuite/30_threads/stop_token/stop_source.cc: Likewise.
1757 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
1758 * testsuite/30_threads/stop_token/stop_token.cc: Likewise.
1759 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
1760 Likewise.
1761
d4912dc7
JDA
1762 PR libstdc++/92906
1763 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
1764
799270b4
PP
17652020-02-28 Patrick Palka <ppalka@redhat.com>
1766
ce33801f
PP
1767 PR libstdc++/93972
1768 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
1769 Fix condition for when to use memcmp, making it consistent with the
1770 corresponding condition used in std::lexicographical_compare.
1771 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
1772
799270b4
PP
1773 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
1774 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to
1775 existing signatures for C++2a.
1776
4735f92d
JW
17772020-02-28 Jonathan Wakely <jwakely@redhat.com>
1778
1779 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
1780 test instead of just compiling it.
1781
a1535015
PP
17822020-02-28 Patrick Palka <ppalka@redhat.com>
1783
77e596cf
PP
1784 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
1785 whenever the underlying range models common_range.
1786
a1535015
PP
1787 * include/std/ranges (__detail::_CachedPosition): New struct.
1788 (views::filter_view::_S_needs_cached_begin): New member variable.
1789 (views::filter_view::_M_cached_begin): New member variable.
1790 (views::filter_view::begin): Use _M_cached_begin to cache its
1791 result.
1792 (views::drop_view::_S_needs_cached_begin): New static member variable.
1793 (views::drop_view::_M_cached_begin): New member variable.
1794 (views::drop_view::begin): Use _M_cached_begin to cache its result
1795 when _S_needs_cached_begin.
1796 (views::drop_while_view::_M_cached_begin): New member variable.
1797 (views::drop_while_view::begin): Use _M_cached_begin to cache its
1798 result.
1799 (views::reverse_view::_S_needs_cached_begin): New static member
1800 variable.
1801 (views::reverse_view::_M_cached_begin): New member variable.
1802 (views::reverse_view::begin): Use _M_cached_begin to cache its result
1803 when _S_needs_cached_begin.
1804 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
1805 drop_view::begin caches its result.
1806 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
1807 that drop_while_view::begin caches its result.
1808 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
1809 filter_view::begin caches its result.
1810 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
1811 reverse_view::begin caches its result.
1812
86e2dc22
JW
18132020-02-28 Jonathan Wakely <jwakely@redhat.com>
1814
a51a546c
JW
1815 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
1816 filesystems that silently truncate timestamps.
1817 * testsuite/experimental/filesystem/operations/last_write_time.cc:
1818 Likewise.
1819
86e2dc22
JW
1820 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable
1821 -Wstringop-overflow warnings.
1822
44949494
JW
18232020-02-27 Jonathan Wakely <jwakely@redhat.com>
1824
1825 * testsuite/lib/libstdc++.exp (v3_target_compile): Add
1826 -fdiagnostics-urls=never to options.
1827
10a32d47
PP
18282020-02-27 Patrick Palka <ppalka@redhat.com>
1829
ba49e9eb
PP
1830 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend
1831 _Iterator<!_Const>.
1832 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
1833 (take_view::_Sentinel<_Const>): Likewise.
1834 (take_while_view::_Sentinel<_Const>): Likewise.
1835 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
1836 * testsuite/std/ranges/adaptors/split.cc: Augment test.
1837 * testsuite/std/ranges/adaptors/take.cc: Augment test.
1838 * testsuite/std/ranges/adaptors/take_while.cc: Augment test.
1839 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
1840
10a32d47
PP
1841 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
1842 base() of a vector<>::iterator is a pointer.
1843 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
1844 * testsuite/25_algorithms/move/constrained.cc: Likewise.
1845 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
1846 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
1847 instead of &foo[0].
1848 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
1849 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
1850 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
1851 * testsuite/25_algorithms/sort/constrained.cc: Likewise.
1852 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
1853
eb8e6a30
JW
18542020-02-27 Jonathan Wakely <jwakely@redhat.com>
1855
ae705159
JW
1856 * include/debug/array (operator<=>): Define for C++20.
1857 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
1858 Adjust dg-error line numbers.
1859 * testsuite/23_containers/array/tuple_interface/
1860 tuple_element_debug_neg.cc: Likewise.
1861
b112e3cb
JW
1862 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
1863 defining _GLIBCXX_ASSERTIONS.
1864 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
1865 * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
1866 * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
1867 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
1868 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
1869 * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
1870 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
1871 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
1872 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
1873 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
1874 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
1875 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
1876
f32a3662
JW
1877 * include/debug/string (__gnu_debug::basic_string::insert): Fix for
1878 C++98 where the member function of the base class returns void.
1879
e94f2542
JW
1880 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
1881 equality comparisons that support value-initialized iterators.
1882
eb8e6a30
JW
1883 * include/bits/boost_concept_check.h (__function_requires): Add
1884 _GLIBCXX14_CONSTEXPR.
1885 * testsuite/25_algorithms/min/concept_checks.cc: New test.
1886
fd335985
PP
18872020-02-26 Patrick Palka <ppalka@redhat.com>
1888
8ce13842
PP
1889 PR libstdc++/93936
1890 * include/std/ranges (split_view::_InnerIter::operator==): Compare
1891 the operands' _M_i rather than their _M_i.current().
1892 * testsuite/std/ranges/adaptors/split.cc: Augment test.
1893
fd335985
PP
1894 P1645R1 constexpr for <numeric> algorithms
1895 * include/bits/stl_numeric.h (iota, accumulate, inner_product,
1896 partial_sum, adjacent_difference): Make conditionally constexpr for
1897 C++20.
1898 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
1899 test macro.
1900 (reduce, transform_reduce, exclusive_scan, inclusive_scan,
1901 transform_exclusive_scan, transform_inclusive_scan): Make conditionally
1902 constexpr for C++20.
1903 * include/std/version (__cpp_lib_constexpr_numeric): Define.
1904 * testsuite/26_numerics/accumulate/constexpr.cc: New test.
1905 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
1906 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
1907 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
1908 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
1909 * testsuite/26_numerics/iota/constexpr.cc: Likewise.
1910 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
1911 * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
1912 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
1913 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
1914 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
1915
8017d95c
JW
19162020-02-26 Jonathan Wakely <jwakely@redhat.com>
1917
113f0a63
JW
1918 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
1919 variables in smaller scope and avoid calling ranges::distance when we
1920 know they are pointers. Remove statically-unreachable use of
1921 __builtin_unreachable().
1922 * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
1923 Define inline.
1924
8017d95c
JW
1925 * include/std/ranges (__detail::__maybe_empty_t): Define new helper
1926 alias.
1927 (__detail::__maybe_const_t): Likewise.
1928 (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
1929 (transform_view, take_view, take_while_view, elements_view): Use
1930 __maybe_const_t.
1931 (join_view, split_view): Use both.
1932
7f0f1083
PP
19332020-02-25 Patrick Palka <ppalka@redhat.com>
1934
76a8c0f6
PP
1935 LWG 3397 basic_istream_view::iterator should not provide
1936 iterator_category
1937 * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
1938 Rename to ...
1939 (basic_istream_view:_Iterator::iterator_concept): ... this.
1940 * testsuite/std/ranges/istream_view.cc: Augment test.
1941
ec15da7c
PP
1942 LWG 3325 Constrain return type of transformation function for
1943 transform_view
1944 * include/std/ranges (transform_view): Constrain the return type of the
1945 transformation function as per LWG 3325.
1946 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
1947
55c4b3f4
PP
1948 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
1949 * include/std/ranges (join_view::_Iterator::operator--): Require that
1950 range_reference_t<_Base> models common_range.
1951 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
1952
510bd1c1
PP
1953 LWG 3301 transform_view::_Iterator has incorrect iterator_category
1954 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
1955 determination of iterator_category as per LWG 3301.
1956 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
1957
7f0f1083
PP
1958 LWG 3292 iota_view is under-constrained
1959 * include/std/ranges (iota_view): Require that _Winc models semiregular
1960 as per LWG 3292.
1961 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
1962
dfb93d05 19632020-02-25 Jonathan Wakely <jwakely@redhat.com>
5b904f17 1964
490350a1
JW
1965 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
1966 during constant evaluation. Call __builtin_memmove directly instead of
1967 __memmove.
1968 (__copy_or_move_backward): Likewise.
1969 * include/bits/stl_algobase.h (__memmove): Remove.
1970 (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
1971 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
1972 Use __builtin_memmove directly instead of __memmove.
1973 (__copy_move_a2): Do not use memmove during constant evaluation.
1974 (__copy_move_backward_a2): Use _IsMove constant to select correct
1975 __copy_move_backward specialization.
1976 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
1977 begin turned into moves during constant evaluation.
1978
6de946e6
JW
1979 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
1980 previous commit.
1981
5b904f17
JW
1982 PR libstdc++/93872
1983 * include/bits/stl_algobase.h (__memmove): Cast away const before
1984 doing move assignment.
1985 * testsuite/25_algorithms/move/93872.cc: New test.
1986 * testsuite/25_algorithms/move_backward/93872.cc: New test.
1987
c5eab4ed
PP
19882020-02-24 Patrick Palka <ppalka@redhat.com>
1989
85c143d0
PP
1990 PR libstdc++/93884
1991 * include/bits/ranges_algobase.h (__copy_or_move,
1992 __copy_or_move_backward): Don't inspect the iter_value_t of the output
1993 iterator, instead inspect its iterator_traits directly.
1994 * include/bits/stl_iterator.h (back_insert_iterator::container):
1995 Conditionally initialize.
1996 (back_insert_iterator::difference_type): Conditionally define.
1997 (back_insert_iterator::back_insert_iterator): Conditionally define this
1998 default constructor.
1999 (front_insert_iterator::container): Conditionally initialize.
2000 (front_insert_iterator::difference_type): Conditionally define.
2001 (front_insert_iterator::front_insert_iterator): Conditionally define
2002 this default constructor.
2003 * 24_iterators/back_insert_iterator/pr93884.cc: New test.
2004 * 24_iterators/front_insert_iterator/pr93884.cc: New test.
2005
c5eab4ed
PP
2006 P0769R2 Add shift to <algorithm>
2007 * include/bits/ranges_algo.h (shift_left, shift_right): New.
2008 * testsuite/25_algorithms/shift_left/1.cc: New test.
2009 * testsuite/25_algorithms/shift_right/1.cc: New test.
2010
3841739c
JW
20112020-02-24 Jonathan Wakely <jwakely@redhat.com>
2012
8566286e
JW
2013 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
2014 Make noexcept-specifier conditional.
2015 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
2016 noexcept-specifier.
2017
120e8734
JW
2018 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
2019 Add constructor.
2020 (operator==(istream_iterator, default_sentinel_t)): Add operator.
2021 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
2022 * include/bits/streambuf_iterator.h
2023 (istreambuf_iterator(default_sentinel_t)): Add constructor.
2024 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
2025 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
2026 New test.
2027 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
2028 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
2029 New test.
2030 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
2031
3841739c
JW
2032 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
2033 (ranges::enable_view): Simplify (LWG 3326).
2034 * include/bits/range_access.h (ranges::enable_view): Declare.
2035 * include/bits/regex.h (__enable_view_impl): Remove partial
2036 specialization.
2037 * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
2038 * include/bits/stl_set.h (__enable_view_impl): Likewise.
2039 * include/bits/unordered_set.h (__enable_view_impl): Likewise.
2040 * include/debug/multiset.h (__enable_view_impl): Likewise.
2041 * include/debug/set.h (__enable_view_impl): Likewise.
2042 * include/debug/unordered_set (__enable_view_impl): Likewise.
2043 * include/experimental/string_view (ranges::enable_view): Define
2044 partial specialization.
2045 * include/std/span (ranges::enable_view): Likewise.
2046 * include/std/string_view (ranges::enable_view): Likewise.
2047 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
2048
9e589880
JW
20492020-02-21 Jonathan Wakely <jwakely@redhat.com>
2050
2051 * include/std/optional (operator<=>(optional<T>, optional<U>))
2052 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
2053 Define for C++20.
2054 * include/std/tuple (__tuple_cmp): New helper function for <=>.
2055 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
2056 * include/std/variant (operator<=>(variant<T...>, variant<T...>))
2057 (operator<=>(monostate, monostate)): Define for C++20.
2058 * testsuite/20_util/optional/relops/three_way.cc: New test.
2059 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
2060 * testsuite/20_util/variant/89851.cc: Move to ...
2061 * testsuite/20_util/variant/relops/89851.cc: ... here.
2062 * testsuite/20_util/variant/90008.cc: Move to ...
2063 * testsuite/20_util/variant/relops/90008.cc: ... here.
2064 * testsuite/20_util/variant/relops/three_way.cc: New test.
2065
5586e506
PP
20662020-02-20 Patrick Palka <ppalka@redhat.com>
2067
6e63438a
PP
2068 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
2069 function.
2070 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use
2071 __maybe_refwrap to capture lvalue references by reference, and then use
2072 unwrap_reference_t to forward the by-reference captures as references.
2073 * testsuite/std/ranges/adaptors/split.cc: Augment test.
2074 * testsuite/std/ranges/adaptors/split_neg.cc: New test.
2075
5586e506
PP
2076 * include/std/ranges (iota_view): Forward declare _Sentinel.
2077 (iota_view::_Iterator): Befriend _Sentinel.
2078 (iota_view::_Sentinel::_M_equal): New member function.
2079 (iota_view::_Sentinel::operator==): Use it.
2080 (views::_Iota::operator()): Forward __f using the correct type.
2081 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
2082 with integers of different signedness, to appease iota_view's deduction
2083 guide.
2084 * testsuite/std/ranges/iota/iota_view.cc: Augment test.
2085
c7b591f3
JW
20862020-02-20 Jonathan Wakely <jwakely@redhat.com>
2087
e817c23f
JW
2088 * include/bits/range_access.h (ranges::begin): Reject array of
2089 incomplete type.
2090 (ranges::end, ranges::size): Require arrays to be bounded.
2091 (ranges::data): Require lvalue or borrowed_range.
2092 (ranges::iterator_t): Remove constraint.
2093 * testsuite/std/ranges/access/begin.cc: Do not check array of
2094 incomplete type.
2095 * testsuite/std/ranges/access/begin_neg.cc: New test.
2096 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
2097 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
2098 * testsuite/std/ranges/access/ssize.cc: Do not check array of
2099 incomplete type.
2100
4be779f5
JW
2101 * include/std/system_error (error_category::operator<=>)
2102 (operator<=>(const error_code&, const error_code&))
2103 (operator<=>(const error_condition&, const error_condition&)): Define
2104 for C++20.
2105 * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
2106 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
2107 test.
2108 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
2109 incorrect comment.
2110 * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
2111 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
2112 incorrect comment.
2113 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
2114 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
2115 incorrect comment.
2116 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
2117 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
2118 Remove incorrect comment.
2119 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
2120 test.
2121
20fa41e6
JW
2122 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
2123
c7b591f3
JW
2124 * include/std/thread (thread::id::operator<=>): Define for C++20.
2125 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
2126 functions in namespace std.
2127 * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
2128
38c7b74d
PP
21292020-02-19 Patrick Palka <ppalka@redhat.com>
2130
2131 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
2132 null terminator of the underlying string as part of the test_range.
2133 (main): Call test03.
2134
a45fb21a
JW
21352020-02-19 Jonathan Wakely <jwakely@redhat.com>
2136
1b425f3a
JW
2137 * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
2138 requirement (LWG 3385).
2139 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
2140 expected declaration.
2141
7433536b
JW
2142 * include/std/ranges (take_while_view, drop_view, drop_while_view)
2143 (elements_view:_Iterator): Initialize data members (LWG 3364).
2144
256f67aa
JW
2145 * libsupc++/compare (three_way_comparable): Remove always-false check
2146 that should have been removed with weak_equality (P1959R0).
2147 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
2148
0294dc5f
JW
2149 * include/std/concepts (__detail::__partially_ordered_with): Move here
2150 from <compare>.
2151 (totally_ordered, totally_ordered_with): Use __partially_ordered_with
2152 to simplify definition (LWG 3331).
2153 * libsupc++/compare (__detail::__partially_ordered_with): Move to
2154 <concepts>.
2155
241ed965
JW
2156 * include/std/concepts (totally_ordered_with): Remove redundant
2157 requirement (LWG 3329).
2158
77f5310f
JW
2159 * include/std/ranges (__detail::__convertible_to_non_slicing): New
2160 helper concept.
2161 (__detail::__pair_like_convertible_to): Remove.
2162 (__detail::__pair_like_convertible_from): Add requirements for
2163 non-slicing conversions.
2164 (subrange): Constrain constructors with __convertible_to_non_slicing.
2165 Remove constructors from pair-like types. Add new deduction guide.
2166 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
2167
59aa9e57
JW
2168 * include/bits/iterator_concepts.h (iter_move): Add declaration to
2169 prevent unqualified lookup finding a suitable declaration (LWG 3247).
2170
e89100ef
JW
2171 * include/std/memory_resource (polymorphic_allocator::allocate)
2172 (polymorphic_allocator::allocate_object): Change type of exception to
2173 bad_array_new_length (LWG 3237).
2174 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
2175
bb54e0b8
JW
2176 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
2177 * include/std/version (__cpp_lib_unwrap_ref): Likewise.
2178 * testsuite/20_util/unwrap_reference/1.cc: Check macro.
2179 * testsuite/20_util/unwrap_reference/3.cc: New test.
2180
5f031f97
JW
2181 * include/std/numeric (midpoint(T8, T*)): Do not check for complete
2182 type during overload resolution, use static assert instead (LWG 3200).
2183 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
2184 incomplete type.
2185 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
2186
66ae31eb
JW
2187 * include/std/span (span(T (&)[N])): Use non-deduced context to
2188 prevent first parameter from interfering with class template argument
2189 deduction (LWG 3369).
2190 * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
2191 * testsuite/23_containers/span/lwg3255.cc: Check for construction from
2192 rvalues.
2193
247f410b
JW
2194 * include/std/span (span::const_iterator, span::const_reverse_iterator)
2195 (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
2196 Remove (LWG 3320).
2197 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
2198 and cend.
2199 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
2200 Likewise.
2201 * testsuite/20_util/specialized_algorithms/uninitialized_copy/
2202 constrained.cc: Likewise.
2203 * testsuite/20_util/specialized_algorithms/
2204 uninitialized_default_construct/constrained.cc: Likewise.
2205 * testsuite/20_util/specialized_algorithms/uninitialized_fill/
2206 constrained.cc: Likewise.
2207 * testsuite/20_util/specialized_algorithms/uninitialized_move/
2208 constrained.cc: Likewise.
2209 * testsuite/20_util/specialized_algorithms/
2210 uninitialized_value_construct/constrained.cc: Likewise.
2211
aca60ecf
JW
2212 * include/bits/range_access.h (range_size_t): Define alias template.
2213 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
2214 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
2215
4cc3b275
JW
2216 * include/std/ranges (filter_view, transform_view, take_view)
2217 (join_view, split_view, reverse_view): Remove commented-out converting
2218 constructors (LWG 3280).
2219
5f3641d0
JW
2220 * include/std/memory (uninitialized_construct_using_allocator): Use
2221 std::construct_at (LWG 3321).
2222
020a03ee
JW
2223 * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
2224 (polymorphic_allocator::allocate_object)
2225 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
2226
15411a64
JW
2227 LWG 3379. "safe" in several library names is misleading
2228 * include/bits/range_access.h (enable_safe_range): Rename to
2229 enable_borrowed_range.
2230 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
2231 (safe_range): Rename to borrowed_range.
2232 * include/bits/ranges_algo.h: Adjust to use new names.
2233 * include/bits/ranges_algobase.h: Likewise.
2234 * include/bits/ranges_uninitialized.h: Likewise.
2235 * include/std/ranges: Likewise.
2236 (safe_iterator_t): Rename to borrowed_iterator_t.
2237 (safe_subrange_t): Rename to borrowed_subrange_t.
2238 * include/std/span: Adjust to use new names.
2239 * include/std/string_view: Likewise.
2240 * include/experimental/string_view: Likewise.
2241 * testsuite/std/ranges/access/begin.cc: Likewise.
2242 * testsuite/std/ranges/access/cbegin.cc: Likewise.
2243 * testsuite/std/ranges/access/cdata.cc: Likewise.
2244 * testsuite/std/ranges/access/cend.cc: Likewise.
2245 * testsuite/std/ranges/access/crbegin.cc: Likewise.
2246 * testsuite/std/ranges/access/crend.cc: Likewise.
2247 * testsuite/std/ranges/access/data.cc: Likewise.
2248 * testsuite/std/ranges/access/end.cc: Likewise.
2249 * testsuite/std/ranges/access/rbegin.cc: Likewise.
2250 * testsuite/std/ranges/access/rend.cc: Likewise.
2251 * testsuite/std/ranges/safe_range.cc: Likewise.
2252 * testsuite/std/ranges/safe_range_types.cc: Likewise.
2253 * testsuite/util/testsuite_iterators.h: Likewise.
2254
fa89adaa
JW
2255 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
2256 (tuple_element<1, const subrange<I, S, K>>): Add partial
2257 specializations (LWG 3398).
2258 * testsuite/std/ranges/subrange/tuple_like.cc: New test.
2259
a45fb21a
JW
2260 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
2261 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
2262 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
2263
242b4fb7
PP
22642020-02-18 Patrick Palka <ppalka@redhat.com>
2265
2266 P1983R0 Wording for GB301, US296, US292, US291, and US283
2267 * include/std/ranges (filter_view::pred): New member function.
2268 (join_view::_Iterator::_Iterator): Remove now-redundant comment since
2269 P1983R0 fixes the highlighted issue in the same way.
2270 (join_view::_Iterator<_Const>): Add friend
2271 join_view::_Iterator<!_Const>.
2272 (join_view::_M_inner): Remove mutable specifier, effectively reverting
2273 the proposed wording changes of P3278.
2274 (join_view::begin): Refine the condition for when to return a const
2275 iterator.
2276 (split_view::_OuterIter::_OuterIter): Adjust constraints.
2277 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
2278 exists and works.
2279
f5b4dc38
JW
22802020-02-18 Jonathan Wakely <jwakely@redhat.com>
2281
a5b213dd
JW
2282 PR libstdc++/93818
2283 * include/std/ranges (_RangeAdaptor): Add deduction guide.
2284 (filter_view::_Iterator): Add alias _Vp_iter and use in place of
2285 iterator_t<_Vp>.
2286 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
2287 (transform_view::_Iterator): Add alias _Base_iter and use in place of
2288 iterator_t<_Base>.
2289 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
2290 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
2291 (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
2292 (split_view::_InnerIter::_S_iter_cat()): Likewise.
2293
ce7b39d0
JW
2294 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
2295 assumption that long is wider than int.
2296 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
2297 * testsuite/20_util/integer_comparisons/less.cc: Likewise.
2298 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
2299 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
2300
9b8e2dea
JW
2301 P1976R2 Fixed-size span construction from dynamic range
2302 * include/std/span (__cpp_lib_span): Update value.
2303 (span(It, size_type), span(It, End)): Make conditionally explicit. Add
2304 assertion.
2305 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
2306 constraints.
2307 (span::first<Count>(), span::last<Count>()): Use explicit type in
2308 return statement.
2309 (as_bytes, as_writable_bytes): Likewise.
2310 * include/std/version (__cpp_lib_span): Update value.
2311 * testsuite/23_containers/span/1.cc: Check new value.
2312 * testsuite/23_containers/span/2.cc: Check new value.
2313 * testsuite/23_containers/span/explicit.cc: New test.
2314
d6c9e372
JW
2315 * include/std/span (span::__is_compatible_array): Simplify alias
2316 template by using requires-clause.
2317 (span::__is_compatible_ref): New alias template for constraining
2318 constructors.
2319 (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
2320 (span(It, size_type), span(It, End)): Use __is_compatible_ref.
2321 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
2322 redundant parentheses.
2323 (span(R&&)): Add missing constraints.
2324
f09f3242
JW
2325 * include/std/span (span): Reorder members and rename template
2326 parameters to match declarations in the C++2a working paper.
2327
f5b4dc38
JW
2328 P2116R0 Remove tuple-like protocol support from fixed-extent span
2329 * include/std/span (get, tuple_size, tuple_element): Remove.
2330 * testsuite/23_containers/span/everything.cc: Remove checks for
2331 tuple-like API.
2332 * testsuite/23_containers/span/get_neg.cc: Remove.
2333 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
2334 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
2335 * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
2336
f3169941
PP
23372020-02-17 Patrick Palka <ppalka@redhat.com>
2338
aa667c3f
PP
2339 P2106R0 Alternative wording for GB315 and GB316
2340 * include/bits/ranges_algo.h (in_fun_result): New.
2341 (for_each_result, for_each_n_result): Change into an alias of
2342 in_fun_result.
2343 (in_in_result): New.
2344 (mismatch_result): Change into an alias of in_in_result.
2345 (copy_if_result): Change into an alias of in_out_result.
2346 (swap_ranges_result): Change into an alias of in_in_result.
2347 (unary_transform_result): Change into an alias of in_out_result.
2348 (in_in_out_result): New.
2349 (binary_transform_result): Change into an alias of in_in_out_result.
2350 (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
2351 remove_copy_result, unique_copy_result, reverse_copy_result,
2352 rotate_copy_result, partial_sort_copy_result): Change into an alias of
2353 in_out_result.
2354 (in_out_out_result): New.
2355 (partition_copy_result, merge_result): Change into an alias of
2356 in_out_out_result.
2357 (set_union_result, set_intersection_result): Change into an alias of
2358 in_in_out_result.
2359 (set_difference_result): Change into an alias of in_out_result.
2360 (set_symmetric_difference): Change into an alias of in_in_out_result.
2361 (min_max_result): New.
2362 (minmax_result, minmax_element_result): Change into an alias of
2363 min_max_result.
2364 (in_found_result): New.
2365 (next_permutation_result, prev_permutation_result): Change into an alias
2366 of in_found_result.
2367 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
2368 Adjust following changes to next_permutation_result and
2369 prev_permutation_result.
2370 * include/bits/ranges_algobase.h (in_out_result): New.
2371 (copy_result, move_result, move_backward_result, copy_backward_result,
2372 copy_n_result): Change into an alias of in_out_result.
2373 * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
2374 uninitialized_copy_n_result, uninitialized_move_result,
2375 uninitialized_move_n_result): Likewise.
2376 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
2377 structured bindings.
2378 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
2379
f3169941
PP
2380 P1243R4 Rangify new algorithms
2381 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
2382 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
2383 * testsuite/25_algorithms/clamp/constrained.cc: New test.
2384 * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
2385 * testsuite/25_algorithms/sample/constrained.cc: New test.
2386
98cf2c26
JW
23872020-02-17 Jonathan Wakely <jwakely@redhat.com>
2388
c5e1c1d3
JW
2389 P1964R2 Wording for boolean-testable
2390 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
2391 (__adjacent_find_fn): Cast result of predicate to bool.
2392 * include/std/concepts (__boolean): Remove.
2393 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
2394 new helper concepts.
2395 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
2396 (predicate): Use __boolean_testable instead of boolean.
2397 * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
2398 Likewise.
2399
7ab36231
JW
2400 P1970R2 Consistency for size() functions: Add ranges::ssize
2401 * include/bits/range_access.h (_SSize, ssize): Define for C++20.
2402 * testsuite/std/ranges/access/ssize.cc: New test.
2403
9866abe3
JW
2404 P1956R1 On the names of low-level bit manipulation functions
2405 * include/bits/hashtable_policy.h: Update comment.
2406 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
2407 (ispow2, ceil2, floor2, log2p1): Likewise.
2408 (__cpp_lib_int_pow2): Add feature test macro.
2409 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
2410 * include/std/memory (assume_aligned): Adjust use of ispow2.
2411 * include/std/version (__cpp_lib_int_pow2): Add.
2412 * libsupc++/new_opa.cc: Adjust use of __ispow2.
2413 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
2414 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
2415 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
2416 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
2417 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
2418 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
2419 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
2420 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
2421 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
2422 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
2423 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
2424 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
2425
cfbc8fbb
JW
2426 * include/std/charconv: Add comment.
2427
9cd4eeef
JW
2428 PR libstdc++/92546 (partial)
2429 * include/bits/random.h (uniform_random_bit_generator): Move definition
2430 to <bits/uniform_int_dist.h>.
2431 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
2432 of <bits/random.h>.
2433 * include/bits/ranges_algobase.h: Do not include <cmath>.
2434 * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
2435 Move here.
2436 * include/std/ranges: Do not include <limits>.
2437 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
2438
c03b53da
JW
2439 PR libstdc++/92546 (partial)
2440 * include/Makefile.am: Add new header.
2441 * include/Makefile.in: Regenerate.
2442 * include/bits/int_limits.h: New header.
2443 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
2444 numeric_limits with __detail::__int_limits.
2445 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
2446 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
2447 Likewise.
2448 * include/std/charconv (__to_chars_8, __from_chars_binary)
2449 (__from_chars_alpha_to_num, from_chars): Likewise.
2450 * include/std/memory_resource (polymorphic_allocator::allocate)
2451 (polymorphic_allocator::allocate_object): Likewise.
2452 * include/std/string_view (basic_string_view::_S_compare): Likewise.
2453 * include/std/utility (in_range): Likewise.
2454 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
2455 extra error about incomplete type __int_limits<bool>.
2456 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
2457 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
2458 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
2459 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
2460 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
2461 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
2462 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
2463 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
2464 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
2465 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
2466 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
2467 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
2468
4540ef78
JW
2469 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
2470 value for partial_ordering::unordered.
2471
d6dfa3da
JW
2472 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
2473 const-qualified expression variations.
2474 * include/std/concepts (copyable): Likewise.
2475
98cf2c26
JW
2476 * include/std/type_traits (__is_standard_integer): New helper trait.
2477 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
2478 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
2479 * include/std/version (__cpp_lib_integer_comparison_functions): Define.
2480 * testsuite/20_util/integer_comparisons/1.cc: New test.
2481 * testsuite/20_util/integer_comparisons/2.cc: New test.
2482 * testsuite/20_util/integer_comparisons/equal.cc: New test.
2483 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
2484 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
2485 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
2486 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
2487 * testsuite/20_util/integer_comparisons/in_range.cc: New test.
2488 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
2489 * testsuite/20_util/integer_comparisons/less.cc: New test.
2490 * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
2491 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
2492 * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
2493 * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
2494 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
2495
93b8cfce
PP
24962020-02-16 Patrick Palka <ppalka@redhat.com>
2497
2498 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
2499 Move code after an early exit constexpr if to under an else branch.
2500 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
2501
90b7eb65
PP
25022020-02-15 Patrick Palka <ppalka@redhat.com>
2503
55992626
PP
2504 * include/bits/ranges_algo.h: Adjust whitespace and formatting.
2505 * include/bits/ranges_algobase.h: Likewise.
2506 * include/bits/ranges_uninitialized.h: Likewise.
2507
b40c57bd
PP
2508 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
2509 binary_search, copy_if, count, count_if, equal_range, find, find_end,
2510 find_first_of, find_if, find_if_not, for_each, generate, generate_n,
2511 includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
2512 is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
2513 lower_bound, make_heap, max, max_element, merge, min, min_element,
2514 minmax, minmax_element, mismatch, next_permutation, none_of,
2515 nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
2516 partition_point, pop_heap, prev_permutation, push_heap, remove,
2517 remove_copy, remove_copy_if, remove_if, replace, replace_copy,
2518 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
2519 search, search_n, set_difference, set_intersection,
2520 set_symmetric_difference, set_union, shuffle, sort, sort_heap,
2521 stable_partition, stable_sort, swap_ranges, transform, unique,
2522 unique_copy, upper_bound): Convert into function objects.
2523 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
2524 fill, move_backward, copy_backward): Likewise.
2525 * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
2526 uninitialized_default_construct_n, uninitialized_value_construct,
2527 uninitialized_value_construct_n, uninitialized_copy,
2528 uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
2529 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
2530 destroy, destroy_n): Likewise.
2531
90b7eb65
PP
2532 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
2533 (ranges::find_end): ... here.
2534 (ranges::__lexicographical_compare): Fold into ...
2535 (ranges::lexicographical_compare): ... here.
2536 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
2537 (ranges::equal): ... here.
2538
55b00d14
JW
25392020-02-15 Jonathan Wakely <jwakely@redhat.com>
2540
2541 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
2542 * include/std/deque: Likewise.
2543 * include/std/forward_list: Likewise.
2544 * include/std/list: Likewise.
2545 * include/std/string: Likewise.
2546 * include/std/vector: Likewise.
2547 * include/std/version: Likewise.
2548 * testsuite/23_containers/deque/erasure.cc: Test for new value.
2549 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
2550 * testsuite/23_containers/list/erasure.cc: Likewise.
2551 * testsuite/23_containers/map/erasure.cc: Likewise.
2552 * testsuite/23_containers/set/erasure.cc: Likewise.
2553 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
2554 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
2555 * testsuite/23_containers/vector/erasure.cc: Likewise.
2556
5b1d5885
JW
25572020-02-15 Jonathan Wakely <jwakely@redhat.com>
2558
2559 * include/bits/random.h (uniform_random_bit_generator): Require min()
2560 and max() to be constant expressions and min() to be less than max().
2561 * testsuite/26_numerics/random/concept.cc: Check additional cases.
2562 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
2563
90fc7b3c
PP
25642020-02-13 Patrick Palka <ppalka@redhat.com>
2565
613c932f
PP
2566 * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
2567 * include/Makefile.in: Regenerate.
2568 * include/bits/ranges_uninitialized.h: New header.
2569 * include/std/memory: Include it.
2570 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
2571 test.
2572 * .../uninitialized_copy/constrained.cc: New test.
2573 * .../uninitialized_default_construct/constrained.cc: New test.
2574 * .../uninitialized_fill/constrained.cc: New test.
2575 * .../uninitialized_move/constrained.cc: New test.
2576 * .../uninitialized_value_construct/constrained.cc: New test.
2577
90fc7b3c
PP
2578 * include/Makefile.am: Add bits/ranges_algobase.h
2579 * include/Makefile.in: Regenerate.
2580 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
2581 existing #includes.
2582 (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
2583 __detail::__is_move_iterator, copy_result, move_result,
2584 __equal, equal, copy_result, move_result, move_backward_result,
2585 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
2586 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
2587 fill): Split out into ...
2588 * bits/range_algobase.h: ... this new header.
2589
99bbab9f
PP
25902020-02-12 Patrick Palka <ppalka@redhat.com>
2591
2592 LWG 3389 and LWG 3390
2593 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
2594 constructing the move_iterator with __i.
2595 (counted_iterator::counted_iterator): Use std::move when initializing
2596 M_current with __i.
2597 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
2598 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
2599
02ce382c
SL
26002020-02-12 Sandra Loosemore <sandra@codesourcery.com>
2601
2602 PR libstdc++/79193
2603 PR libstdc++/88999
2604
2605 * configure: Regenerated.
2606
b32a3f32
FD
26072020-02-12 François Dumont <fdumont@gcc.gnu.org>
2608
2609 * include/bits/hashtable.h
2610 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
2611 missing std namespace qualification to forward call.
2612
dcda050e
JW
26132020-02-09 Jonathan Wakely <jwakely@redhat.com>
2614
38660e87
JW
2615 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
2616 comment.
2617 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
2618
97a7c229
JW
2619 * include/std/ranges: Fix non-ASCII characters in comment.
2620
dcda050e
JW
2621 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
2622 equality comparison to be valid and return bool.
2623 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
2624 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
2625 type with ambiguous conversion to fundamental types.
2626 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
2627
d222d8ec
JW
26282020-02-07 Jonathan Wakely <jwakely@redhat.com>
2629
c8dd2446
JW
2630 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
2631 Use remove_cvref_t.
2632 (readable_traits): Rename to indirectly_readable_traits.
2633 (readable): Rename to indirectly_readable.
2634 (writable): Rename to indirectly_writable.
2635 (__detail::__iter_exchange_move): Do not use remove_reference_t.
2636 (indirectly_swappable): Adjust requires expression parameter types.
2637 expression.
2638 * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
2639 (ranges::replace_if, ranges::generate_n, ranges::generate)
2640 (ranges::remove): Use new name for writable.
2641 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
2642 Use new name for readable.
2643 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
2644 new name for readable_traits.
2645 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
2646 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
2647 new definition of indirectly_readable.
2648
d222d8ec
JW
2649 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
2650 to take parameters of common_iterator, instead of the common_iterator
2651 type itself. Fix argument for __common_iter_has_arrow constraint.
2652 (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
2653
572992c8
JW
26542020-02-07 Jonathan Wakely <jwakely@redhat.com>
2655
2656 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
2657 warning.
2658 (basic_istream_view::_Iterator::operator++()): Add missing return.
2659
cba9ef06
PP
26602020-02-07 Patrick Palka <ppalka@redhat.com>
2661
a04f635d
PP
2662 * include/bits/ranges_algo.h: Remove extraneous &&.
2663
b7903d9f
PP
2664 * include/std/ranges (ranges::__detail::__stream_extractable,
2665 ranges::basic_istream_view, ranges::istream_view): Define.
2666 * testsuite/std/ranges/istream_view: New test.
2667
cba9ef06
PP
2668 Implement C++20 range adaptors
2669 * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
2670 (subrange::_S_store_size): Mark as const instead of constexpr to
2671 avoid what seems to be a bug in GCC.
2672 (__detail::__box): Give it defaulted copy and move constructors.
55d4cbcb
PP
2673 (ranges::views::_Single::operator()): Mark constexpr.
2674 (ranges::views::_Iota::operator()): Mark constexpr.
cba9ef06 2675 (__detail::Empty): Define.
55d4cbcb
PP
2676 (ranges::views::__closure::_RangeAdaptor,
2677 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
2678 ranges::views::all, ranges::__detail::find_if,
2679 ranges::__detail::find_if_not, ranges::__detail::mismatch,
2680 ranges::detail::min, filter_view, ranges::views::filter, transform_view,
2681 ranges::views::transform, take_view, ranges::views::take,
2682 take_while_view, ranges::views::take_while, drop_view,
2683 ranges::views::drop, join_view, ranges::views::join,
cba9ef06 2684 __detail::require_constant, __detail::tiny_range, split_view,
55d4cbcb
PP
2685 ranges::views::split, ranges::views::_Counted, ranges::views::counted,
2686 common_view, ranges::views::common, reverse_view,
2687 ranges::views::reverse,
2688 ranges::views::__detail::__is_reversible_subrange,
2689 ranges::views::__detail::__is_reverse_view, reverse_view,
2690 ranges::views::reverse, __detail::__has_tuple_element, elements_view,
2691 ranges::views::elements, ranges::views::keys, ranges::views::values):
2692 Define.
2693 (views): Alias for ranges::views.
2694 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
2695 tuple_element<1, ranges::subrange>): New partial specializations.
cba9ef06
PP
2696 * testsuite/std/ranges/adaptors/all.cc: New test.
2697 * testsuite/std/ranges/adaptors/common.cc: Likewise.
2698 * testsuite/std/ranges/adaptors/counted.cc: Likewise.
2699 * testsuite/std/ranges/adaptors/drop.cc: Likewise.
2700 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
2701 * testsuite/std/ranges/adaptors/elements.cc: Likewise.
2702 * testsuite/std/ranges/adaptors/filter.cc: Likewise.
2703 * testsuite/std/ranges/adaptors/join.cc: Likewise.
2704 * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
2705 * testsuite/std/ranges/adaptors/split.cc: Likewise.
2706 * testsuite/std/ranges/adaptors/take.cc: Likewise.
2707 * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
2708 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
2709
5713834e
JW
27102020-02-07 Jonathan Wakely <jwakely@redhat.com>
2711
0d57370c
JW
2712 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
2713 type of enumerations and comparison category types.
2714 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
2715 (__cmp_cat::_Ncmp::unordered): Change value to 2.
2716 (partial_ordering::_M_value, weak_ordering::_M_value)
2717 (strong_ordering::_M_value): Change type to __cmp_cat::type.
2718 (partial_ordering::_M_is_ordered): Remove data member.
2719 (partial_ordering): Use second bit of _M_value for unordered. Adjust
2720 comparison operators.
2721 (weak_ordering::operator partial_ordering): Simplify to remove
2722 branches.
2723 (operator<=>(unspecified, weak_ordering)): Likewise.
2724 (strong_ordering::operator partial_ordering): Likewise.
2725 (strong_ordering::operator weak_ordering): Likewise.
2726 (operator<=>(unspecified, strong_ordering)): Likewise.
2727 * testsuite/18_support/comparisons/categories/partialord.cc: New test.
2728 * testsuite/18_support/comparisons/categories/strongord.cc: New test.
2729 * testsuite/18_support/comparisons/categories/weakord.cc: New test.
2730
5713834e
JW
2731 * include/std/ranges (iota_view::_Iterator): Fix typo in name of
2732 __cpp_lib_three_way_comparison macro and use deduced return type for
2733 operator<=>.
2734 * testsuite/std/ranges/iota/iterator.cc: New test.
2735
bc464641
PP
27362020-02-07 Patrick Palka <ppalka@redhat.com>
2737 Jonathan Wakely <jwakely@redhat.com>
2738
2739 Implement C++20 constrained algorithms
2740 * include/Makefile.am: Add new header.
2741 * include/Makefile.in: Regenerate.
2742 * include/std/algorithm: Include <bits/ranges_algo.h>.
2743 * include/bits/ranges_algo.h: New file.
2744 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
2745 * testsuite/25_algorithms/all_of/constrained.cc: New test.
2746 * testsuite/25_algorithms/any_of/constrained.cc: New test.
2747 * testsuite/25_algorithms/binary_search/constrained.cc: New test.
2748 * testsuite/25_algorithms/copy/constrained.cc: New test.
2749 * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
2750 * testsuite/25_algorithms/copy_if/constrained.cc: New test.
2751 * testsuite/25_algorithms/copy_n/constrained.cc: New test.
2752 * testsuite/25_algorithms/count/constrained.cc: New test.
2753 * testsuite/25_algorithms/count_if/constrained.cc: New test.
2754 * testsuite/25_algorithms/equal/constrained.cc: New test.
2755 * testsuite/25_algorithms/equal_range/constrained.cc: New test.
2756 * testsuite/25_algorithms/fill/constrained.cc: New test.
2757 * testsuite/25_algorithms/fill_n/constrained.cc: New test.
2758 * testsuite/25_algorithms/find/constrained.cc: New test.
2759 * testsuite/25_algorithms/find_end/constrained.cc: New test.
2760 * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
2761 * testsuite/25_algorithms/find_if/constrained.cc: New test.
2762 * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
2763 * testsuite/25_algorithms/for_each/constrained.cc: New test.
2764 * testsuite/25_algorithms/generate/constrained.cc: New test.
2765 * testsuite/25_algorithms/generate_n/constrained.cc: New test.
2766 * testsuite/25_algorithms/heap/constrained.cc: New test.
2767 * testsuite/25_algorithms/includes/constrained.cc: New test.
2768 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
2769 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
2770 * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
2771 * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
2772 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
2773 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
2774 test.
2775 * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
2776 * testsuite/25_algorithms/max/constrained.cc: New test.
2777 * testsuite/25_algorithms/max_element/constrained.cc: New test.
2778 * testsuite/25_algorithms/merge/constrained.cc: New test.
2779 * testsuite/25_algorithms/min/constrained.cc: New test.
2780 * testsuite/25_algorithms/min_element/constrained.cc: New test.
2781 * testsuite/25_algorithms/minmax/constrained.cc: New test.
2782 * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
2783 * testsuite/25_algorithms/mismatch/constrained.cc: New test.
2784 * testsuite/25_algorithms/move/constrained.cc: New test.
2785 * testsuite/25_algorithms/move_backward/constrained.cc: New test.
2786 * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
2787 * testsuite/25_algorithms/none_of/constrained.cc: New test.
2788 * testsuite/25_algorithms/nth_element/constrained.cc: New test.
2789 * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
2790 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
2791 * testsuite/25_algorithms/partition/constrained.cc: New test.
2792 * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
2793 * testsuite/25_algorithms/partition_point/constrained.cc: New test.
2794 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
2795 * testsuite/25_algorithms/remove/constrained.cc: New test.
2796 * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
2797 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
2798 * testsuite/25_algorithms/remove_if/constrained.cc: New test.
2799 * testsuite/25_algorithms/replace/constrained.cc: New test.
2800 * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
2801 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
2802 * testsuite/25_algorithms/replace_if/constrained.cc: New test.
2803 * testsuite/25_algorithms/reverse/constrained.cc: New test.
2804 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
2805 * testsuite/25_algorithms/rotate/constrained.cc: New test.
2806 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
2807 * testsuite/25_algorithms/search/constrained.cc: New test.
2808 * testsuite/25_algorithms/search_n/constrained.cc: New test.
2809 * testsuite/25_algorithms/set_difference/constrained.cc: New test.
2810 * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
2811 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
2812 test.
2813 * testsuite/25_algorithms/set_union/constrained.cc: New test.
2814 * testsuite/25_algorithms/shuffle/constrained.cc: New test.
2815 * testsuite/25_algorithms/sort/constrained.cc: New test.
2816 * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
2817 * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
2818 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
2819 * testsuite/25_algorithms/transform/constrained.cc: New test.
2820 * testsuite/25_algorithms/unique/constrained.cc: New test.
2821 * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
2822 * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
2823
d1aa7705
JW
28242020-02-06 Jonathan Wakely <jwakely@redhat.com>
2825
bd630df0
JW
2826 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
2827 number in comment. Fix indentation.
2828
d1aa7705
JW
2829 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
2830 redundant _GLIBCXX20_CONSTEXPR.
2831
26eae9ac
JW
2832 * include/std/ranges (viewable_range): Replace decay_t with
2833 remove_cvref_t (LWG 3375).
2834
269e8130
JW
28352020-02-05 Jonathan Wakely <jwakely@redhat.com>
2836
2837 * include/bits/iterator_concepts.h (iter_reference_t)
2838 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
2839 Remove workarounds for PR c++/67704.
2840 * testsuite/24_iterators/aliases.cc: New test.
2841
7db12d15
PP
28422020-02-05 Patrick Palka <ppalka@redhat.com>
2843
2844 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
2845 when initializing _M_current.
2846 (move_iterator::base): Split into two overloads differing in
2847 ref-qualifiers as in P1207R4 for C++20.
2848
9962493c
JW
28492020-02-04 Jonathan Wakely <jwakely@redhat.com>
2850
9bc5bea1
JW
2851 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
2852 use.
2853
9962493c
JW
2854 PR libstdc++/93562
2855 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
2856 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
2857 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
2858
20fa702b
AB
28592020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
2860
2861 * configure: Regenerate.
2862
6e5a1963
PP
28632020-01-31 Patrick Palka <ppalka@redhat.com>
2864
2865 * testsuite/24_iterators/range_operations/distance.cc: Do not assume
2866 test_range::end() returns the same type as test_range::begin().
2867 * testsuite/24_iterators/range_operations/next.cc: Likewise.
2868 * testsuite/24_iterators/range_operations/prev.cc: Likewise.
2869 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
2870 Always return a sentinel<I>.
2871
5cd2e126
JW
28722020-01-29 Jonathan Wakely <jwakely@redhat.com>
2873
0a8f4feb
JW
2874 PR libstdc++/92895
2875 * include/std/stop_token (stop_token::stop_possible()): Call new
2876 _M_stop_possible() function.
2877 (stop_token::stop_requested()): Do not use stop_possible().
2878 (stop_token::binary_semaphore): New class, as temporary stand-in for
2879 std::binary_semaphore.
2880 (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
2881 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
2882 New data members for symchronization with stop_callback destruction.
2883 (stop_token::_Stop_cb::_Stop_cb): Make non-template.
2884 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
2885 Remove.
2886 (stop_token::_Stop_cb::_M_run): New member function.
2887 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
2888 Remove.
2889 (stop_token::_Stop_state::_M_owners): New data member to track
2890 reference count for ownership.
2891 (stop_token::_Stop_state::_M_value): New data member combining a
2892 spinlock, the stop requested flag, and the reference count for
2893 associated stop_source objects.
2894 (stop_token::_Stop_state::_M_requester): New data member for
2895 synchronization with stop_callback destruction.
2896 (stop_token::_Stop_state::_M_stop_possible()): New member function.
2897 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
2898 of _M_value.
2899 (stop_token::_Stop_state::_M_add_owner)
2900 (stop_token::_Stop_state::_M_release_ownership)
2901 (stop_token::_Stop_state::_M_add_ssrc)
2902 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
2903 updating reference counts.
2904 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
2905 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
2906 (stop_token::_Stop_state::_M_try_lock)
2907 (stop_token::_Stop_state::_M_try_lock_and_stop)
2908 (stop_token::_Stop_state::_M_do_try_lock): New member functions for
2909 managing spinlock.
2910 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
2911 read and update state. Release lock while running callbacks. Use new
2912 data members to synchronize with callback destruction.
2913 (stop_token::_Stop_state::_M_remove_callback): Likewise.
2914 (stop_token::_Stop_state::_M_register_callback): Use atomic operations
2915 to read and update state.
2916 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
2917 replacing shared_ptr.
2918 (stop_source::stop_source(const stop_source&)): Update reference count.
2919 (stop_source::operator=(const stop_source&)): Likewise.
2920 (stop_source::~stop_source()): Likewise.
2921 (stop_source::stop_source(stop_source&&)): Define as defaulted.
2922 (stop_source::operator=(stop_source&&)): Establish postcondition on
2923 parameter.
2924 (stop_callback): Enforce preconditions on template parameter. Replace
2925 base class with data member of new _Cb_impl type.
2926 (stop_callback::stop_callback(const stop_token&, Cb&&))
2927 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
2928 (stop_callback::_Cb_impl): New type wrapping _Callback member and
2929 defining the _S_execute member function.
2930 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
2931 test.
2932 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
2933 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
2934 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
2935 New test.
2936 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
2937 test.
2938 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
2939 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
2940 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
2941 test.
2942
f214ffb3
JW
2943 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
2944 three_way_comparable_with.
2945 (__detail::__3way_cmp_with): Remove workaround for fixed bug.
2946 (compare_three_way::operator()): Remove redundant constraint from
2947 requires-clause.
2948 (__detail::_Synth3way::operator()): Use three_way_comparable_with
2949 instead of workaround.
2950 * testsuite/18_support/comparisons/object/93479.cc: Prune extra
2951 output due to simplified constraints on compare_three_way::operator().
2952
83b02010
JW
2953 PR libstdc++/93479
2954 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
2955 * testsuite/18_support/comparisons/object/93479.cc: New test.
2956
5cd2e126
JW
2957 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
2958 returns the same type as test_range::begin(). Add comments.
2959 * testsuite/std/ranges/access/rbegin.cc: Likewise.
2960 * testsuite/std/ranges/access/rend.cc: Likewise.
2961 * testsuite/std/ranges/range.cc: Do not assume the sentinel for
2962 test_range is the same as its iterator type.
2963 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
2964 operator- overloads to satisfy sized_sentinel_for when the iterator
2965 satisfies random_access_iterator.
2966
759812fd
JW
29672020-01-28 Jonathan Wakely <jwakely@redhat.com>
2968
72a9fd20
JW
2969 PR libstdc++/93470
2970 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
2971 static assertion to object types.
2972
759812fd
JW
2973 PR libstdc++/93325
2974 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
2975 clock_gettime instead of explicit glibc version check.
2976 * configure: Regenerate.
2977
a5d81aaa
JW
29782020-01-28 Martin Liska <mliska@suse.cz>
2979
2980 PR libstdc++/93478
2981 * include/std/atomic: Fix typo.
2982 * include/std/optional: Likewise.
2983
29842020-01-27 Andrew Burgess <andrew.burgess@embecosm.com>
2985
2986 * configure: Regenerate.
2987
389cd88c
JW
29882020-01-27 Jonathan Wakely <jwakely@redhat.com>
2989
2990 PR libstdc++/93426
2991 * include/std/span (span): Fix deduction guide.
2992 * testsuite/23_containers/span/deduction.cc: New test.
2993
482eeff5
JW
29942020-01-24 Jonathan Wakely <jwakely@redhat.com>
2995
2996 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
2997 (__cmp_cat::_Ord::equivalent): Add enumerator.
2998 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
2999 and greater.
3000 (partial_ordering, weak_ordering, strong_ordering): Remove
3001 constructors taking __cmp_cat::_Eq parameters. Use renamed
3002 enumerators.
3003
e8e66971
MR
30042020-01-24 Maciej W. Rozycki <macro@wdc.com>
3005
3006 * acinclude.m4: Handle `--with-toolexeclibdir='.
3007 * Makefile.in: Regenerate.
3008 * aclocal.m4: Regenerate.
3009 * configure: Regenerate.
3010 * doc/Makefile.in: Regenerate.
3011 * include/Makefile.in: Regenerate.
3012 * libsupc++/Makefile.in: Regenerate.
3013 * po/Makefile.in: Regenerate.
3014 * python/Makefile.in: Regenerate.
3015 * src/Makefile.in: Regenerate.
3016 * src/c++11/Makefile.in: Regenerate.
3017 * src/c++17/Makefile.in: Regenerate.
3018 * src/c++98/Makefile.in: Regenerate.
3019 * src/filesystem/Makefile.in: Regenerate.
3020 * testsuite/Makefile.in: Regenerate.
3021
7a900bce
AO
30222020-01-23 Alexandre Oliva <oliva@adacore.com>
3023
f9e84b31
AO
3024 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
3025 * configure: Rebuild.
3026
7a900bce
AO
3027 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
3028
04681fca
JW
30292020-01-23 Jonathan Wakely <jwakely@redhat.com>
3030
3031 PR libstdc++/91947
3032 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
3033 rule.
3034 * include/Makefile.in: Regenerate.
3035
c784f162
JW
30362020-01-20 Jonathan Wakely <jwakely@redhat.com>
3037
3038 * doc/xml/faq.xml: Fix grammar.
3039 * doc/xml/manual/appendix_contributing.xml: Improve instructions.
3040 * doc/xml/manual/spine.xml: Update copyright years.
3041 * doc/html/*: Regenerate.
3042
f4d83eba
ER
30432020-01-19 Eric S. Raymond <esr@thyrsus.com>
3044
3045 * doc/xml/faq.xml: Update for SVN -> Git transition.
3046 * doc/xml/manual/appendix_contributing.xml: Likewise.
3047 * doc/xml/manual/status_cxx1998.xml: Likewise.
3048 * doc/xml/manual/status_cxx2011.xml: Likewise.
3049 * doc/xml/manual/status_cxx2014.xml: Likewise.
3050 * doc/xml/manual/status_cxx2017.xml: Likewise.
3051 * doc/xml/manual/status_cxx2020.xml: Likewise.
3052 * doc/xml/manual/status_cxxtr1.xml: Likewise.
3053 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
3054
49789fd0
IS
30552020-01-18 Iain Sandoe <iain@sandoe.co.uk>
3056
3057 * include/Makefile.am: Add coroutine to the std set.
3058 * include/Makefile.in: Regenerated.
3059 * include/std/coroutine: New file.
3060
0ba6a850
JW
30612020-01-17 Jonathan Wakely <jwakely@redhat.com>
3062
3063 PR libstdc++/92376
3064 * include/bits/c++config: Only do PSTL config when the header is
3065 present, to fix freestanding.
3066 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
3067 functions if they were detected by configure.
3068
98d56ea8
JW
30692020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de>
3070 Matthew Bauer <mjbauer95@gmail.com>
3071 Jonathan Wakely <jwakely@redhat.com>
3072
3073 PR bootstrap/64271 (partial)
3074 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
3075 to unsigned short.
3076 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
3077 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
3078 definitions with NetBSD upstream.
3079 (ctype_base::blank): Use _CTYPE_BL.
3080 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
3081 Declaration.
3082 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
3083 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
3084 parameters to unsigned char.
3085 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
3086
d9165389
FD
30872020-01-16 François Dumont <fdumont@gcc.gnu.org>
3088
3089 PR libstdc++/91263
3090 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
3091 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
3092 (_Equality_base): Remove.
3093 (_Equality<>::_M_equal): Review implementation. Use
3094 std::is_permutation.
3095 * testsuite/23_containers/unordered_multiset/operators/1.cc
3096 (Hash, Equal, test02, test03): New.
3097 * testsuite/23_containers/unordered_set/operators/1.cc
3098 (Hash, Equal, test02, test03): New.
3099
2a0f6c61
JW
31002020-01-15 Jonathan Wakely <jwakely@redhat.com>
3101
3102 PR libstdc++/93267
3103 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
3104 Move here from <bits/range_access.h> and define using __int128 when
3105 available.
3106 (__is_integer_like, __is_signed_integer_like): Move here from
3107 <bits/range_access.h>.
3108 (weakly_incrementable): Use __is_signed_integer_like.
3109 * include/bits/range_access.h (__max_diff_type, __max_size_type)
3110 (__is_integer_like, __is_signed_integer_like): Move to
3111 <bits/iterator_concepts.h>.
3112 (__make_unsigned_like_t): Move here from <ranges>.
3113 * include/std/ranges (__make_unsigned_like_t): Move to
3114 <bits/range_access.h>.
3115 (iota_view): Replace using-directive with using-declarations.
3116 * testsuite/std/ranges/iota/93267.cc: New test.
3117 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
3118
e4379a93
JW
31192020-01-13 Jonathan Wakely <jwakely@redhat.com>
3120
fe7cc34f
JW
3121 PR libstdc++/93244
3122 * include/bits/fs_path.h (path::generic_string<C,A>)
3123 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
3124 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
3125 root-dir is converted to forward slash in generic pathname.
3126 * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
3127 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
3128
e4379a93
JW
3129 PR libstdc++/58605
3130 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
3131 Define.
3132 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
3133 (__atomic_float): Add default member initializer for C++20.
3134 * include/std/atomic (atomic): Likewise.
3135 (atomic::atomic()): Remove noexcept-specifier on default constructor.
3136 * include/std/version (__cpp_lib_atomic_value_initialization): Define.
3137 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
3138 number.
3139 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
3140 * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
3141 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
3142 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
3143 expected result for is_trivially_default_constructible.
3144 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
3145 * testsuite/29_atomics/atomic_float/value_init.cc: New test.
3146 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
3147 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
3148 * testsuite/29_atomics/atomic_integral/cons/value_init.cc
3149 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
3150 expected results for is_trivially_default_constructible.
3151 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
3152 new test generator.
3153
7918cb93
JW
31542020-01-10 Jonathan Wakely <jwakely@redhat.com>
3155
68be73fc
JW
3156 * testsuite/util/testsuite_iterators.h: Improve comment.
3157
78f02e80
JW
3158 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
3159 initialization syntax.
3160
7918cb93
JW
3161 PR libstdc++/92285
3162 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
3163 of base class independent of __cplusplus value.
3164 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
3165 type defined in the base class
3166 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
3167 * testsuite/24_iterators/istreambuf_iterator/requirements/
3168 base_classes.cc: Adjust expected base class for C++98.
3169
acd43917
OH
31702020-01-09 Olivier Hainque <hainque@adacore.com>
3171
3172 * doc/xml/manual/appendix_contributing.xml: Document _C2
3173 as a reserved identifier, by VxWorks.
3174 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
3175 * include/bits/stl_multimap.h: Likewise.
3176
caa39b2e
JW
31772020-01-09 Jonathan Wakely <jwakely@redhat.com>
3178
1a788638
JW
3179 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
3180 (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
3181 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
3182 partial specialization to disambiguate the two constrained
3183 specializations.
3184
caa39b2e
JW
3185 * include/experimental/type_traits (experimental::is_pod_v): Disable
3186 -Wdeprecated-declarations warnings around reference to std::is_pod.
3187 * include/std/type_traits (is_pod_v): Likewise.
3188 * testsuite/18_support/max_align_t/requirements/2.cc: Also check
3189 is_standard_layout and is_trivial. Do not check is_pod for C++20.
3190 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
3191 Add -Wno-deprecated for C++20.
3192 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
3193 * testsuite/20_util/is_pod/value.cc: Likewise.
3194 * testsuite/experimental/type_traits/value.cc: Likewise.
3195
1a6c5064
JTM
31962020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
3197
3198 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
3199 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
3200 * testuite/20_util/is_pod/deprecated-2a.cc: New test.
3201
d574c8aa
JW
32022020-01-09 Jonathan Wakely <jwakely@redhat.com>
3203
160e95dc
JW
3204 PR libstdc++/93205
3205 * include/bits/random.h (operator>>): Check stream operation succeeds.
3206 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
3207 typedefs.
3208 (operator>>): Remove redundant __istream_type typedefs. Check stream
3209 operations succeed.
3210 (__extract_params): New function to fill a vector from a stream.
3211 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
3212
d574c8aa
JW
3213 PR libstdc++/93208
3214 * config/abi/pre/gnu.ver: Add new exports.
3215 * include/std/memory_resource (memory_resource::~memory_resource()):
3216 Do not define inline.
3217 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
3218 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
3219 Define.
3220 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
3221 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
3222
b9c84e95
FD
32232020-01-09 François Dumont <fdumont@gcc.gnu.org>
3224
3225 PR libstdc++/92124
3226 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
3227 template alias.
3228 (_Hashtable<>::__fwd_value_for): New.
3229 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
3230 parameter.
3231 (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
3232 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
3233 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
3234 with std::move.
3235 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
3236 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
3237 Adapt.
3238 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
3239 Adapt.
3240 * testsuite/23_containers/unordered_set/92124.cc: New.
3241
fff148b7
JW
32422020-01-08 Jonathan Wakely <jwakely@redhat.com>
3243
3244 PR libstdc++/93201
3245 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
3246 detailed error reporting for remove_all. Check result of recursive
3247 call before incrementing iterator.
3248 (remove_all(const path&), remove_all(const path&, error_code&)): Use
3249 do_remove_all.
3250 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
3251 result of recursive call before incrementing iterator.
3252 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
3253 are reported correctly.
3254 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
3255
9e3c1eb7
TR
32562020-01-07 Thomas Rodgers <trodgers@redhat.com>
3257
3258 * include/std/condition_variable
3259 (condition_variable_any::wait_on): Rename to match current draft
3260 standard.
3261 (condition_variable_any::wait_on_until): Likewise.
3262 (condition_variable_any::wait_on_for): Likewise.
3263 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
3264 Adjust tests to account for renamed methods.
3265
6af8819b
FD
32662020-01-07 François Dumont <fdumont@gcc.gnu.org>
3267
3268 PR libstdc++/92124
3269 * include/bits/stl_tree.h
3270 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
3271 std::move_if_noexcept by std::move.
3272 * testsuite/23_containers/map/92124.cc: New.
3273 * testsuite/23_containers/set/92124.cc: New.
3274
f31a99f7
JW
32752020-01-06 Jonathan Wakely <jwakely@redhat.com>
3276
a4a1f965
JW
3277 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
3278 (stop_source): Likewise (LWG 3362).
3279 * testsuite/30_threads/stop_token/stop_source.cc: Test equality
3280 comparisons.
3281
f31a99f7
JW
3282 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
3283 (lexicographical_compare_three_way): Do not depend on
3284 __cpp_lib_concepts.
3285 * include/std/version (__cpp_lib_three_way_comparison): Only define
3286 when __cpp_lib_concepts is defined.
3287 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
3288
b4e70137
JW
32892020-01-03 Jonathan Wakely <jwakely@redhat.com>
3290
3291 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
3292 Only define four-argument overload when __cpp_lib_concepts is defined.
3293
a8497ec6
JDA
32942020-01-01 John David Anglin <danglin@gcc.gnu.org>
3295
3296 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
3297
8d9254fc 32982020-01-01 Jakub Jelinek <jakub@redhat.com>
5624e564
JJ
3299
3300 Update copyright years.
b4df5e92 3301\f
8d9254fc 3302Copyright (C) 2020 Free Software Foundation, Inc.
b4df5e92
JW
3303
3304Copying and distribution of this file, with or without modification,
3305are permitted in any medium without royalty provided the copyright
3306notice and this notice are preserved.