libstdc++: Fix tests that fail in C++20 mode
[gcc.git] / libstdc++-v3 / ChangeLog
1 2020-04-20 Jonathan Wakely <jwakely@redhat.com>
2
3 * testsuite/20_util/is_constructible/51185.cc: Make test class a
4 non-aggregate so that the test verifies the same thing in all -std
5 modes.
6 * testsuite/20_util/is_constructible/value-2.cc: Adjust expected
7 results for some types when paren-init for aggregates is supported.
8
9 * include/std/version (__cpp_lib_three_way_comparison): Update value.
10 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
11 (__detail::__synth3way): Add noexcept-specifier.
12
13 * include/bits/stl_map.h (map): Define operator<=> and remove
14 operator< for C++20.
15 * include/bits/stl_multimap.h (multimap): Likewise.
16 * include/bits/stl_multiset.h (multiset): Likewise.
17 * include/bits/stl_set.h (set): Likewise.
18 * include/bits/stl_tree.h (_Rb_tree): Likewise.
19 (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
20 operator!= for C++20.
21 * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
22 * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
23 * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
24 * include/debug/set.h (__gnu_debug::set): Likewise.
25 * testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
26 * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
27 * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
28 * testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
29
30 2020-04-20 Matthias Kretz <kretz@kde.org>
31
32 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
33
34 2020-04-19 Jonathan Wakely <jwakely@redhat.com>
35
36 * include/bits/stl_queue.h (queue): Define operator<=> for C++20.
37 * include/bits/stl_stack.h (stack): Likewise.
38 * testsuite/23_containers/queue/cmp_c++20.cc: New test.
39 * testsuite/23_containers/stack/cmp_c++20.cc: New test.
40
41 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
42 Remove redundant operator!= for C++20.
43 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
44 Likewise.
45 * include/debug/unordered_map (unordered_map, unordered_multimap):
46 Likewise.
47 * include/debug/unordered_set (unordered_set, unordered_multiset):
48 Likewise.
49
50 PR other/94629
51 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix
52 redundant assignment in constructor.
53
54 2020-04-18 Jonathan Wakely <jwakely@redhat.com>
55
56 * include/std/chrono (duration, time_point): Define operator<=> and
57 remove redundant operator!= for C++20.
58 * testsuite/20_util/duration/comparison_operators/three_way.cc: New
59 test.
60 * testsuite/20_util/time_point/comparison_operators/three_way.cc: New
61 test.
62
63 * testsuite/util/native_type/native_priority_queue.hpp: Use
64 allocator_traits to rebind allocator.
65
66 2020-04-17 Jonathan Wakely <jwakely@redhat.com>
67
68 * include/bits/forward_list.h (forward_list): Define operator<=> and
69 remove redundant comparison operators for C++20.
70 * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
71 * include/bits/stl_deque.h (deque): Likewise.
72 * include/bits/stl_iterator.h (__normal_iterator): Likewise.
73 * include/bits/stl_list.h (list): Likewise.
74 * include/bits/stl_vector.h (vector): Likewise.
75 * include/debug/deque (__gnu_debug::deque): Likewise.
76 * include/debug/forward_list (__gnu_debug::forward_list): Likewise.
77 * include/debug/list (__gnu_debug::list): Likewise.
78 * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
79 Likewise.
80 * include/debug/vector (__gnu_debug::vector): Likewise.
81 * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
82 operator<=> for C++20.
83 * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
84 * testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
85 * testsuite/23_containers/list/cmp_c++20.cc: New test.
86 * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
87 * testsuite/23_containers/vector/cmp_c++20.cc: New test.
88
89 * include/bits/basic_string.h (basic_string): Define operator<=> and
90 remove redundant comparison operators for C++20.
91 * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
92 Add comparison_category members.
93 (__detail::__char_traits_cmp_cat): New helper to get comparison
94 category from char traits class.
95 * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
96 define for C++20.
97 (sub_match): Define operator<=> and remove redundant comparison
98 operators for C++20.
99 (match_results): Remove redundant operator!= for C++20.
100 * include/std/string_view (basic_string_view): Define operator<=> and
101 remove redundant comparison operators for C++20.
102 * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
103 test.
104 * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
105 New test.
106 * testsuite/21_strings/basic_string_view/operations/copy/char/
107 constexpr.cc: Initialize variable.
108 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
109 constexpr.cc: Likewise.
110 * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
111 dg-do directive and remove comments showing incorrect signatures.
112 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
113 Likewise.
114 * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
115 New test.
116 * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
117 New test.
118 * testsuite/28_regex/sub_match/compare_c++20.cc: New test.
119
120 2020-04-16 Jonathan Wakely <jwakely@redhat.com>
121
122 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
123 name of unused parameter.
124
125 2020-04-15 Jonathan Wakely <jwakely@redhat.com>
126
127 * include/bits/fs_dir.h (file_status): Define operator== for C++20.
128 (directory_entry): Define operator<=> and remove redundant comparison
129 operators for C++20.
130 * include/bits/fs_fwd.h (space_info): Define operator== for C++20.
131 * include/bits/fs_path.h (path): Define operator<=> and remove
132 redundant comparison operators for C++20.
133 * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
134 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
135 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
136 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
137
138 * include/bits/allocator.h (operator!=): Do not define for C++20.
139 * include/bits/locale_classes.h (operator!=): Likewise.
140 * include/bits/std_function.h (operator==(nullptr_t, const function&))
141 (operator!=(const function&, nullptr_t))
142 (operator!=(nullptr_t, const function&)): Likewise.
143 * include/ext/bitmap_allocator.h (operator!=): Likewise.
144 * include/ext/debug_allocator.h (operator!=): Likewise.
145 * include/ext/extptr_allocator.h (operator!=): Likewise.
146 * include/ext/malloc_allocator.h (operator!=): Likewise.
147 * include/ext/mt_allocator.h (operator!=): Likewise.
148 * include/ext/new_allocator.h (operator!=): Likewise.
149 * include/ext/pool_allocator.h (operator!=): Likewise.
150 * include/ext/throw_allocator.h (operator!=): Likewise.
151 * include/std/bitset (bitset::operator!=): Likewise.
152 * include/std/memory_resource (operator!=): Likewise.
153 * include/std/scoped_allocator (operator!=): Likewise.
154
155 * include/std/typeindex (operator<=>): Define for C++20.
156 * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
157
158 2020-04-14 Jonathan Wakely <jwakely@redhat.com>
159
160 * libsupc++/compare (compare_three_way): Fix constraint so that
161 BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
162 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
163 New test.
164
165 PR libstdc++/94562
166 * include/bits/shared_ptr.h (operator<=>): Define for C++20.
167 * include/bits/shared_ptr_base.h (operator<=>): Likewise.
168 * include/bits/unique_ptr.h (operator<=>): Add inline specifier.
169 * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
170 * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
171 std::less<A*> to be used when comparing std::shared_ptr<A> objects in
172 C++20.
173
174 PR libstdc++/94565
175 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
176 * testsuite/18_support/comparisons/categories/94565.cc: New test.
177
178 2020-04-13 Iain Sandoe <iain@sandoe.co.uk>
179
180 * include/std/coroutine: Update coroutines builtin define,
181 per n4861.
182
183 2020-04-09 Jonathan Wakely <jwakely@redhat.com>
184
185 * libsupc++/compare (compare_three_way): Fix noexcept-specifier.
186 (strong_order, weak_order, partial_order): Replace uses of <=> with
187 compare_three_way function object (LWG 3324).
188 * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
189 equality operator so that X satisfies three_way_comparable.
190 * testsuite/18_support/comparisons/algorithms/strong_order.cc:
191 Likewise.
192 * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
193
194 * include/bits/unique_ptr.h (operator<=>): Define for C++20.
195 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
196 * testsuite/20_util/default_delete/void_neg.cc: Likewise.
197 * testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
198 * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
199
200 2020-04-08 Jonathan Wakely <jwakely@redhat.com>
201
202 * include/bits/slice_array.h (operator==(const slice&, const slice&)):
203 Define for C++20.
204 * include/std/complex (operator==(const T&, const complex<T>&))
205 (operator!=(const complex<T>&, const complex<T>&))
206 (operator!=(const complex<T>&, const T&))
207 (operator!=(const T&, const complex<T>&)): Do not declare for C++20.
208 * testsuite/26_numerics/slice/compare.cc: New test.
209
210 * include/std/charconv (to_chars_result, from_chars_result): Add
211 defaulted equality comparisons for C++20.
212 * testsuite/20_util/from_chars/compare.cc: New test.
213 * testsuite/20_util/to_chars/compare.cc: New test.
214
215 2020-04-07 Jonathan Wakely <jwakely@redhat.com>
216
217 PR libstdc++/94520
218 * include/std/charconv (__integer_to_chars_result_type)
219 (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
220 allow use in C++14.
221 * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
222 use of std::string_view with std::string.
223 * testsuite/20_util/from_chars/2.cc: Likewise.
224 * testsuite/20_util/to_chars/1.cc: Likewise.
225 * testsuite/20_util/to_chars/2.cc: Likewise.
226
227 2020-04-06 Jonathan Wakely <jwakely@redhat.com>
228
229 PR libstdc++/94498
230 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
231 usable in constant expressions for C++20.
232 (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
233 _GLIBCXX20_CONSTEXPR.
234 (std::char_traits<char>, std::char_traits<wchar_t>)
235 (std::char_traits<char8_t>): Make move, copy and assign usable in
236 constant expressions for C++20.
237 (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
238 and copy usable in constant expressions for C++20.
239 * include/std/string_view (basic_string_view::copy): Add
240 _GLIBCXX20_CONSTEXPR.
241 * testsuite/21_strings/basic_string_view/operations/copy/char/
242 constexpr.cc: New test.
243 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
244 constexpr.cc: New test.
245
246 2020-04-05 Gerald Pfeifer <gerald@pfeifer.com>
247
248 * doc/xml/manual/appendix_contributing.xml: Refer to Git
249 documentation instead of Subversion. Switch to https.
250 * doc/html/manual/appendix_contributing.html: Regenerate.
251
252 2020-04-03 Jonathan Wakely <jwakely@redhat.com>
253
254 PR libstdc++/93960
255 * include/bits/ptr_traits.h (__to_address): Add special case for debug
256 iterators, to avoid dereferenceable check.
257 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
258 * testsuite/20_util/to_address/debug.cc: New test.
259
260 2020-04-01 Andrea Corallo <andrea.corallo@arm.com>
261
262 * testsuite/experimental/net/execution_context/use_service.cc:
263 Require pthread and gthreads.
264
265 2020-04-01 Gerald Pfeifer <gerald@pfeifer.com>
266
267 * doc/xml/manual/appendix_free.xml: Move "free books" list from
268 fsf.org to gnu.org.
269 * doc/html/manual/appendix_free.html: Regenerate.
270
271 2020-03-31 Ville Voutilainen <ville.voutilainen@gmail.com>
272
273 Library-side tests for parenthesized aggregate init
274
275 PR c++/92878
276 PR c++/92947
277
278 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
279 * testsuite/20_util/any/assign/92878_92947.cc: Likewise.
280 * testsuite/20_util/any/cons/92878_92947.cc: Likewise.
281 * testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
282 * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
283 * testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
284 * testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
285 * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
286 * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
287 Likewise.
288 * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
289 * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
290 * testsuite/20_util/variant/92878_92947.cc: Likewise.
291 * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
292 Likewise.
293 * testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
294 Likewise.
295 * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
296 Likewise.
297 * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
298 Likewise.
299 * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
300 Likewise.
301 * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
302 Likewise.
303 * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
304 * testsuite/23_containers/queue/92878_92947.cc: Likewise.
305 * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
306 Likewise.
307 * testsuite/23_containers/stack/92878_92947.cc: Likewise.
308 * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
309 Likewise.
310 * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
311 Likewise.
312 * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
313 Likewise.
314 * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
315 Likewise.
316 * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
317 Likewise.
318
319 2020-03-28 Jonathan Wakely <jwakely@redhat.com>
320
321 * testsuite/20_util/is_constructible/value-2.cc: Fix test to account
322 for changes due to parenthesized aggregate-initialization in C++20.
323 * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
324 with std::chrono::sys_time in C++20.
325
326 * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
327 to constrain C++20 versions of comparison operators. Fix backwards
328 logic of relational operators.
329 (move_iterator): Use requires-clause to constrain comparison operators
330 in C++20. Do not declare non-standard same-type overloads for C++20.
331 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
332 of comparisons and check using greedy_ops type.
333 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
334 * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
335 main function from compile-only test.
336 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
337
338 2020-03-27 Jonathan Wakely <jwakely@redhat.com>
339
340 * include/bits/range_cmp.h (__cpp_lib_ranges): Define.
341 * include/bits/stl_iterator.h: Check value of __cpp_concepts so that
342 C++20 concepts are required.
343 * include/bits/stl_iterator_base_types.h: Likewise.
344 * include/std/concepts: Likewise.
345 * include/std/version: Likewise.
346 * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
347 macro.
348
349 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
350 (reverse_iterator::iterator_category): Define for C++20.
351 (reverse_iterator): Define comparison operators correctly for C++20.
352 (__normal_iterator): Add constraints to comparison operators for C++20.
353 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
354 overload for input iterators.
355 (move_iterator): Add constraints to comparison operators for C++20.
356 Define operator<=> for C++20.
357 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
358 * testsuite/24_iterators/move_iterator/move_only.cc: New test.
359 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
360 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
361
362 * include/bits/iterator_concepts.h (__detail::__decay_copy)
363 (__detail::__member_begin, __detail::__adl_begin): Move here from
364 <bits/range_access.h>.
365 (__detail::__ranges_begin, __detail::__range_iter_t): Define.
366 * bits/range_access.h (__cust_access::__decay_copy)
367 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to
368 <bits/iterator_concepts.h>.
369 (ranges::iterator_t): Use __detail::__range_iter_t.
370 * include/bits/stl_iterator.h (back_insert_iterator): Simplify
371 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
372 (front_insert_iterator): Likewise.
373 (insert_iterator): Implement changes from P0896R4 for C++20.
374 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
375 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
376 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
377 for inclusion in synopsis_c++20.cc which expects different signatures
378 for some function templates.
379 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
380
381 * include/std/type_traits (__is_array_convertible): Move definition
382 to immediately after is_convertible.
383
384 2020-03-26 Jonathan Wakely <jwakely@redhat.com>
385
386 * include/std/chrono (chrono::days, chrono::weeks, chrono::years)
387 (chrono::months, chrono::sys_days, chrono::local_t)
388 (chrono::local_time, chrono::local_seconds, chrono::local_days):
389 Define for C++20.
390 (chrono::time_point): Add missing static assert.
391 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
392 * testsuite/std/time/clock/file/overview.cc: New test.
393 * testsuite/std/time/clock/file/members.cc: New test.
394 * testsuite/std/time/syn_c++20.cc: New test.
395
396 2020-03-25 Mike Crowe <mac@mcrowe.com>
397
398 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
399 test.
400 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
401 test.
402
403 2020-03-25 Jonathan Wakely <jwakely@redhat.com>
404
405 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
406 * include/std/chrono (filesystem::__file_clock): Here.
407 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
408 Define public member functions for C++20.
409 (is_clock, is_clock_v): Define traits for C++20.
410 * include/std/condition_variable (condition_variable::wait_until): Add
411 check for valid clock.
412 * include/std/future (_State_baseV2::wait_until): Likewise.
413 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
414 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
415 Likewise.
416 * include/std/thread (this_thread::sleep_until): Likewise.
417 * testsuite/30_threads/condition_variable/members/2.cc: Qualify
418 slow_clock with new namespace.
419 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New
420 test.
421 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
422 New test.
423 * testsuite/30_threads/future/members/clock_neg.cc: New test.
424 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
425 Qualify slow_clock with new namespace.
426 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/
427 clock_neg.cc: New test.
428 * testsuite/30_threads/shared_future/members/clock_neg.cc: New
429 test.
430 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
431 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
432 New test.
433 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
434 slow_clock with new namespace.
435 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
436 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
437 test.
438 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
439 * testsuite/std/time/traits/is_clock.cc: New test.
440 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
441 namespace.
442
443 2020-03-21 Jonathan Wakely <jwakely@redhat.com>
444
445 PR libstdc++/93245
446 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
447 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
448 Improve test coverage.
449
450 PR libstdc++/94242
451 * include/bits/fs_path.h (path::_S_str_convert): Replace first
452 parameter with basic_string_view so that strings with different
453 allocators can be accepted.
454 (path::generic_string<C,T,A>()): Use basic_string object that uses the
455 right allocator type.
456 * testsuite/27_io/filesystem/path/generic/94242.cc: New test.
457 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
458 test coverage.
459
460 2020-03-18 Jonathan Wakely <jwakely@redhat.com>
461
462 PR libstdc++/94033
463 * include/std/type_traits (__is_nt_default_constructible_atom): Remove.
464 (__is_nt_default_constructible_impl): Remove.
465 (__is_nothrow_default_constructible_impl): Remove.
466 (__is_nt_constructible_impl): Add bool template parameter. Adjust
467 partial specializations.
468 (__is_nothrow_constructible_impl): Replace class template with alias
469 template.
470 (is_nothrow_default_constructible): Derive from alias template
471 __is_nothrow_constructible_impl instead of
472 __is_nothrow_default_constructible_impl.
473 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
474
475 * include/std/stop_token (stop_token::_Stop_state_ref): Define
476 comparison operators explicitly if the compiler won't synthesize them.
477
478 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
479 __cpp_lib_concepts before using iter_reference_t.
480 * include/bits/stream_iterator.h (istream_iterator): Check
481 __cpp_lib_concepts before using default_sentinel_t.
482 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
483
484 PR libstdc++/94203
485 * include/experimental/executor (executor::executor(Executor)): Call
486 make_shared directly instead of _M_create. Create _Tgt1 object.
487 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
488 Call allocate_shared directly instead of _M_create. Create _Tgt2
489 object.
490 (executor::target_type): Add cast needed for new _Tgt interface.
491 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
492 (executor::_Tgt): Define the same interface whether RTTI is enabled or
493 not.
494 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use
495 std::type_info in the interface.
496 (executor::_Tgt::_M_func): Add data member.
497 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
498 (executor::_Tgt1::_S_func): Define function to access target without
499 depending on RTTI.
500 (executor::_M_create): Remove.
501 (operator==, operator!=): Simplify comparisons for executor.
502 * include/experimental/socket (is_error_code_enum<socket_errc>):
503 Define specialization before use.
504 * testsuite/experimental/net/executor/1.cc: New test.
505
506 2020-03-16 Jonathan Wakely <jwakely@redhat.com>
507
508 PR libstdc++/94199
509 * include/experimental/executor (service_already_exists): Add default
510 constructor. Declare make_service to be a friend.
511 * testsuite/experimental/net/execution_context/make_service.cc: New
512 test.
513
514 2020-03-12 Jonathan Wakely <jwakely@redhat.com>
515
516 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
517 a null pointer to functions with nonnull(1) attribute.
518
519 2020-03-11 Patrick Palka <ppalka@redhat.com>
520
521 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
522 'address' -> 'std::__addressof'.
523 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
524 a non-forward input_range.
525 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
526 default constructor protected instead of deleted, like with
527 input_iterator_wrapper.
528 (test_range::iterator): Add comment explaining that this type is used
529 only when the underlying wrapper is input_iterator_wrapper or
530 output_iterator_wrapper. Remove delegating defaulted constructor so
531 that the inherited default constructor is used instead.
532
533 LWG 3286 ranges::size is not required to be valid after a call to
534 ranges::begin on an input range
535 * include/std/ranges (subrange::subrange): Split single-argument
536 constructor into two, one constrained by _S_store_size and another by
537 !_S_store_size.
538 (take_view::begin): Call size() before calling ranges::begin(_M_base).
539 * testsuite/std/ranges/adaptors/lwg3286.cc: New test.
540 * testsuite/std/ranges/subrange/lwg3286.cc: New test.
541
542 2020-03-10 Jonathan Wakely <jwakely@redhat.com>
543
544 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
545 instead of _M_current.
546 (split_view::_OuterIter::operator++): Likewise.
547
548 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
549 (transform_view::_Iterator::operator*): Add noexcept-specifier.
550 (transform_view::_Iterator::iter_move): Inline __iter_move body here.
551 (split_view::_OuterIter::__current): Add noexcept.
552 (split_view::_InnerIter::__iter_swap): Remove.
553 (split_view::_InnerIter::__iter_move): Remove.
554 (split_view::_InnerIter::_M_i_current): New accessors.
555 (split_view::_InnerIter::__at_end): Use _M_i_current().
556 (split_view::_InnerIter::operator*): Likewise.
557 (split_view::_InnerIter::operator++): Likewise.
558 (iter_move(const _InnerIter&)): Likewise.
559 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
560 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
561 for iter_move and iter_swap on split_view's inner iterator.
562
563 PR c++/94117
564 * include/std/ranges (ranges::transform_view::_Iterator::iter_move):
565 Change expression in noexcept-specifier to match function body.
566
567 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
568 comment explaining multiple dg-do directives.
569 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
570 so test is run as well as compiled.
571
572 2020-03-09 Jonathan Wakely <jwakely@redhat.com>
573
574 PR libstdc++/94063
575 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
576 handle concatenations that change the type of the first component.
577 (path::operator+=(basic_string_view<value_type>)): Likewise.
578 * testsuite/27_io/filesystem/path/concat/94063.cc: New test.
579
580 2020-03-06 Patrick Palka <ppalka@redhat.com>
581
582 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend
583 join_view::_Sentinel<!_Const>.
584 * testsuite/std/ranges/adaptors/join.cc: Augment test.
585
586 PR libstdc++/93978
587 * include/bits/range_access.h (__cust_access::_Empty::operator()):
588 Declare return type to be bool instead of auto.
589 * testsuite/std/ranges/adaptors/93978.cc: New test.
590
591 2020-03-06 Jonathan Wakely <jwakely@redhat.com>
592
593 PR libstdc++/94069
594 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
595 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
596 second argument to __glibcxx_rwlock_init.
597 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
598
599 PR libstdc++/93244
600 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
601 test to not fail due to PR 94063.
602 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
603 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
604
605 2020-03-06 Andreas Krebbel <krebbel@linux.ibm.com>
606
607 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
608 would match ENOSYS.
609
610 2020-03-05 Jonathan Wakely <jwakely@redhat.com>
611
612 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
613 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
614 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
615 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
616 for return value, and in comparison.
617 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
618
619 PR libstdc++/94051
620 * include/std/string_view: Include <bits/ostream_insert.h>.
621 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
622
623 2020-03-04 Jonathan Wakely <jwakely@redhat.com>
624
625 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
626
627 2020-03-04 Patrick Palka <ppalka@redhat.com>
628
629 PR libstdc++/94017
630 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
631 condition for when to use memset, making sure to additionally check that
632 the output pointer's value type is a non-volatile byte type. Instead of
633 requiring that the fill type is a byte type, just require that it's an
634 integral type.
635 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
636 New test.
637 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
638 New test.
639 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
640 blocked by PR 94017.
641 * testsuite/25_algorithms/fill/94017.cc: New test.
642 * testsuite/25_algorithms/fill_n/94017.cc: New test.
643
644 LWG 3355 The memory algorithms should support move-only input iterators
645 introduced by P1207
646 * include/bits/ranges_uninitialized.h
647 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
648 to copy __ifirst, which could be a move-only input iterator. Use
649 operator- instead of ranges::distance to compute distance from a sized
650 sentinel.
651 (__uninitialized_copy_n_fn::operator()): Likewise.
652 (__uninitialized_move_fn::operator()): Likewise.
653 (__uninitialized_move_n_fn::operator()): Likewise.
654 (__uninitialized_destroy_fn::operator()): Use std::move to avoid
655 attempting to copy __first.
656 (__uninitialized_destroy_n_fn::operator()): Likewise.
657 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
658 Augment test.
659 * .../specialized_algorithms/uninitialized_copy/constrained.cc:
660 Likewise.
661 * .../specialized_algorithms/uninitialized_move/constrained.cc:
662 Likewise.
663
664 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
665 protected instead of private.
666 (test_sized_range_sized_sent): New.
667
668 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
669 New testsuite iterator.
670 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
671 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
672
673 * include/bits/ranges_uninitialized.h
674 (uninitialized_copy_fn::operator()): Pass a reference type as the first
675 argument to is_nothrow_assignable_v.
676 (uninitialized_copy_fn::operator()): Likewise.
677 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result
678 with the input iterator stripped of its move_iterator.
679 (uninitialized_move_n_fn::operator()): Likewise.
680 (uninitialized_fill_fn::operator()): Pass a reference type as the first
681 argument to is_nothrow_assignable_v.
682 (uninitialized_fill_n_fn::operator()): Likewise.
683
684 2020-03-03 Jonathan Wakely <jwakely@redhat.com>
685
686 PR libstdc++/94013
687 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
688 traits to control when to use memmove and memcmp optimizations.
689 (__is_nonvolatile_trivially_copyable): New helper trait.
690 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
691 use memcmp optimization with volatile data.
692 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
693 (__copy_or_move, __copy_or_move_backward): Use __memcpyable.
694 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
695 (__copy_move_backward_a2): Likewise.
696 (__equal_aux1): Use __memcmpable.
697 (__lexicographical_compare_aux): Do not use memcmp optimization with
698 volatile data.
699 * testsuite/25_algorithms/copy/94013.cc: New test.
700 * testsuite/25_algorithms/copy_backward/94013.cc: New test.
701 * testsuite/25_algorithms/equal/94013.cc: New test.
702 * testsuite/25_algorithms/fill/94013.cc: New test.
703 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
704 * testsuite/25_algorithms/move/94013.cc: New test.
705 * testsuite/25_algorithms/move_backward/94013.cc: New test.
706
707 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
708 Avoid redundant iterator comparisons (LWG 3410).
709
710 2020-03-02 Jonathan Wakely <jwakely@redhat.com>
711
712 PR libstdc++/93972
713 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to
714 differ.
715 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
716
717 * include/std/ranges (__detail::__maybe_empty_t): Rename to
718 __maybe_present_t.
719 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
720
721 * include/bits/ranges_algo.h (shift_right): Add 'typename' to
722 dependent type.
723
724 2020-03-01 H.J. Lu <hongjiu.lu@intel.com>
725
726 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
727
728 2020-02-29 John David Anglin <danglin@gcc.gnu.org>
729
730 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
731 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
732 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
733 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
734 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
735
736 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
737 Add libatomic option.
738 * testsuite/30_threads/jthread/jthread.cc: Likewise.
739
740 2020-02-29 François Dumont <fdumont@gcc.gnu.org>
741
742 * include/bits/stl_algo.h
743 (__find_if, __count_if, __is_permutation, std::is_permutation): Move...
744 * include/bits/stl_algobase.h: ...here.
745 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
746
747 2020-02-29 John David Anglin <danglin@gcc.gnu.org>
748
749 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
750 option.
751 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
752 Likewise.
753 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
754 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
755 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
756 * testsuite/30_threads/stop_token/stop_source.cc: Likewise.
757 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
758 * testsuite/30_threads/stop_token/stop_token.cc: Likewise.
759 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
760 Likewise.
761
762 PR libstdc++/92906
763 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
764
765 2020-02-28 Patrick Palka <ppalka@redhat.com>
766
767 PR libstdc++/93972
768 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
769 Fix condition for when to use memcmp, making it consistent with the
770 corresponding condition used in std::lexicographical_compare.
771 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
772
773 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
774 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to
775 existing signatures for C++2a.
776
777 2020-02-28 Jonathan Wakely <jwakely@redhat.com>
778
779 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
780 test instead of just compiling it.
781
782 2020-02-28 Patrick Palka <ppalka@redhat.com>
783
784 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
785 whenever the underlying range models common_range.
786
787 * include/std/ranges (__detail::_CachedPosition): New struct.
788 (views::filter_view::_S_needs_cached_begin): New member variable.
789 (views::filter_view::_M_cached_begin): New member variable.
790 (views::filter_view::begin): Use _M_cached_begin to cache its
791 result.
792 (views::drop_view::_S_needs_cached_begin): New static member variable.
793 (views::drop_view::_M_cached_begin): New member variable.
794 (views::drop_view::begin): Use _M_cached_begin to cache its result
795 when _S_needs_cached_begin.
796 (views::drop_while_view::_M_cached_begin): New member variable.
797 (views::drop_while_view::begin): Use _M_cached_begin to cache its
798 result.
799 (views::reverse_view::_S_needs_cached_begin): New static member
800 variable.
801 (views::reverse_view::_M_cached_begin): New member variable.
802 (views::reverse_view::begin): Use _M_cached_begin to cache its result
803 when _S_needs_cached_begin.
804 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
805 drop_view::begin caches its result.
806 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
807 that drop_while_view::begin caches its result.
808 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
809 filter_view::begin caches its result.
810 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
811 reverse_view::begin caches its result.
812
813 2020-02-28 Jonathan Wakely <jwakely@redhat.com>
814
815 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
816 filesystems that silently truncate timestamps.
817 * testsuite/experimental/filesystem/operations/last_write_time.cc:
818 Likewise.
819
820 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable
821 -Wstringop-overflow warnings.
822
823 2020-02-27 Jonathan Wakely <jwakely@redhat.com>
824
825 * testsuite/lib/libstdc++.exp (v3_target_compile): Add
826 -fdiagnostics-urls=never to options.
827
828 2020-02-27 Patrick Palka <ppalka@redhat.com>
829
830 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend
831 _Iterator<!_Const>.
832 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
833 (take_view::_Sentinel<_Const>): Likewise.
834 (take_while_view::_Sentinel<_Const>): Likewise.
835 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
836 * testsuite/std/ranges/adaptors/split.cc: Augment test.
837 * testsuite/std/ranges/adaptors/take.cc: Augment test.
838 * testsuite/std/ranges/adaptors/take_while.cc: Augment test.
839 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
840
841 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
842 base() of a vector<>::iterator is a pointer.
843 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
844 * testsuite/25_algorithms/move/constrained.cc: Likewise.
845 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
846 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
847 instead of &foo[0].
848 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
849 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
850 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
851 * testsuite/25_algorithms/sort/constrained.cc: Likewise.
852 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
853
854 2020-02-27 Jonathan Wakely <jwakely@redhat.com>
855
856 * include/debug/array (operator<=>): Define for C++20.
857 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
858 Adjust dg-error line numbers.
859 * testsuite/23_containers/array/tuple_interface/
860 tuple_element_debug_neg.cc: Likewise.
861
862 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
863 defining _GLIBCXX_ASSERTIONS.
864 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
865 * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
866 * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
867 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
868 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
869 * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
870 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
871 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
872 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
873 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
874 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
875 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
876
877 * include/debug/string (__gnu_debug::basic_string::insert): Fix for
878 C++98 where the member function of the base class returns void.
879
880 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
881 equality comparisons that support value-initialized iterators.
882
883 * include/bits/boost_concept_check.h (__function_requires): Add
884 _GLIBCXX14_CONSTEXPR.
885 * testsuite/25_algorithms/min/concept_checks.cc: New test.
886
887 2020-02-26 Patrick Palka <ppalka@redhat.com>
888
889 PR libstdc++/93936
890 * include/std/ranges (split_view::_InnerIter::operator==): Compare
891 the operands' _M_i rather than their _M_i.current().
892 * testsuite/std/ranges/adaptors/split.cc: Augment test.
893
894 P1645R1 constexpr for <numeric> algorithms
895 * include/bits/stl_numeric.h (iota, accumulate, inner_product,
896 partial_sum, adjacent_difference): Make conditionally constexpr for
897 C++20.
898 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
899 test macro.
900 (reduce, transform_reduce, exclusive_scan, inclusive_scan,
901 transform_exclusive_scan, transform_inclusive_scan): Make conditionally
902 constexpr for C++20.
903 * include/std/version (__cpp_lib_constexpr_numeric): Define.
904 * testsuite/26_numerics/accumulate/constexpr.cc: New test.
905 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
906 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
907 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
908 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
909 * testsuite/26_numerics/iota/constexpr.cc: Likewise.
910 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
911 * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
912 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
913 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
914 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
915
916 2020-02-26 Jonathan Wakely <jwakely@redhat.com>
917
918 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
919 variables in smaller scope and avoid calling ranges::distance when we
920 know they are pointers. Remove statically-unreachable use of
921 __builtin_unreachable().
922 * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
923 Define inline.
924
925 * include/std/ranges (__detail::__maybe_empty_t): Define new helper
926 alias.
927 (__detail::__maybe_const_t): Likewise.
928 (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
929 (transform_view, take_view, take_while_view, elements_view): Use
930 __maybe_const_t.
931 (join_view, split_view): Use both.
932
933 2020-02-25 Patrick Palka <ppalka@redhat.com>
934
935 LWG 3397 basic_istream_view::iterator should not provide
936 iterator_category
937 * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
938 Rename to ...
939 (basic_istream_view:_Iterator::iterator_concept): ... this.
940 * testsuite/std/ranges/istream_view.cc: Augment test.
941
942 LWG 3325 Constrain return type of transformation function for
943 transform_view
944 * include/std/ranges (transform_view): Constrain the return type of the
945 transformation function as per LWG 3325.
946 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
947
948 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
949 * include/std/ranges (join_view::_Iterator::operator--): Require that
950 range_reference_t<_Base> models common_range.
951 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
952
953 LWG 3301 transform_view::_Iterator has incorrect iterator_category
954 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
955 determination of iterator_category as per LWG 3301.
956 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
957
958 LWG 3292 iota_view is under-constrained
959 * include/std/ranges (iota_view): Require that _Winc models semiregular
960 as per LWG 3292.
961 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
962
963 2020-02-25 Jonathan Wakely <jwakely@redhat.com>
964
965 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
966 during constant evaluation. Call __builtin_memmove directly instead of
967 __memmove.
968 (__copy_or_move_backward): Likewise.
969 * include/bits/stl_algobase.h (__memmove): Remove.
970 (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
971 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
972 Use __builtin_memmove directly instead of __memmove.
973 (__copy_move_a2): Do not use memmove during constant evaluation.
974 (__copy_move_backward_a2): Use _IsMove constant to select correct
975 __copy_move_backward specialization.
976 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
977 begin turned into moves during constant evaluation.
978
979 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
980 previous commit.
981
982 PR libstdc++/93872
983 * include/bits/stl_algobase.h (__memmove): Cast away const before
984 doing move assignment.
985 * testsuite/25_algorithms/move/93872.cc: New test.
986 * testsuite/25_algorithms/move_backward/93872.cc: New test.
987
988 2020-02-24 Patrick Palka <ppalka@redhat.com>
989
990 PR libstdc++/93884
991 * include/bits/ranges_algobase.h (__copy_or_move,
992 __copy_or_move_backward): Don't inspect the iter_value_t of the output
993 iterator, instead inspect its iterator_traits directly.
994 * include/bits/stl_iterator.h (back_insert_iterator::container):
995 Conditionally initialize.
996 (back_insert_iterator::difference_type): Conditionally define.
997 (back_insert_iterator::back_insert_iterator): Conditionally define this
998 default constructor.
999 (front_insert_iterator::container): Conditionally initialize.
1000 (front_insert_iterator::difference_type): Conditionally define.
1001 (front_insert_iterator::front_insert_iterator): Conditionally define
1002 this default constructor.
1003 * 24_iterators/back_insert_iterator/pr93884.cc: New test.
1004 * 24_iterators/front_insert_iterator/pr93884.cc: New test.
1005
1006 P0769R2 Add shift to <algorithm>
1007 * include/bits/ranges_algo.h (shift_left, shift_right): New.
1008 * testsuite/25_algorithms/shift_left/1.cc: New test.
1009 * testsuite/25_algorithms/shift_right/1.cc: New test.
1010
1011 2020-02-24 Jonathan Wakely <jwakely@redhat.com>
1012
1013 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
1014 Make noexcept-specifier conditional.
1015 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
1016 noexcept-specifier.
1017
1018 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
1019 Add constructor.
1020 (operator==(istream_iterator, default_sentinel_t)): Add operator.
1021 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
1022 * include/bits/streambuf_iterator.h
1023 (istreambuf_iterator(default_sentinel_t)): Add constructor.
1024 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
1025 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
1026 New test.
1027 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
1028 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
1029 New test.
1030 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
1031
1032 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
1033 (ranges::enable_view): Simplify (LWG 3326).
1034 * include/bits/range_access.h (ranges::enable_view): Declare.
1035 * include/bits/regex.h (__enable_view_impl): Remove partial
1036 specialization.
1037 * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
1038 * include/bits/stl_set.h (__enable_view_impl): Likewise.
1039 * include/bits/unordered_set.h (__enable_view_impl): Likewise.
1040 * include/debug/multiset.h (__enable_view_impl): Likewise.
1041 * include/debug/set.h (__enable_view_impl): Likewise.
1042 * include/debug/unordered_set (__enable_view_impl): Likewise.
1043 * include/experimental/string_view (ranges::enable_view): Define
1044 partial specialization.
1045 * include/std/span (ranges::enable_view): Likewise.
1046 * include/std/string_view (ranges::enable_view): Likewise.
1047 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
1048
1049 2020-02-21 Jonathan Wakely <jwakely@redhat.com>
1050
1051 * include/std/optional (operator<=>(optional<T>, optional<U>))
1052 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
1053 Define for C++20.
1054 * include/std/tuple (__tuple_cmp): New helper function for <=>.
1055 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
1056 * include/std/variant (operator<=>(variant<T...>, variant<T...>))
1057 (operator<=>(monostate, monostate)): Define for C++20.
1058 * testsuite/20_util/optional/relops/three_way.cc: New test.
1059 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
1060 * testsuite/20_util/variant/89851.cc: Move to ...
1061 * testsuite/20_util/variant/relops/89851.cc: ... here.
1062 * testsuite/20_util/variant/90008.cc: Move to ...
1063 * testsuite/20_util/variant/relops/90008.cc: ... here.
1064 * testsuite/20_util/variant/relops/three_way.cc: New test.
1065
1066 2020-02-20 Patrick Palka <ppalka@redhat.com>
1067
1068 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
1069 function.
1070 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use
1071 __maybe_refwrap to capture lvalue references by reference, and then use
1072 unwrap_reference_t to forward the by-reference captures as references.
1073 * testsuite/std/ranges/adaptors/split.cc: Augment test.
1074 * testsuite/std/ranges/adaptors/split_neg.cc: New test.
1075
1076 * include/std/ranges (iota_view): Forward declare _Sentinel.
1077 (iota_view::_Iterator): Befriend _Sentinel.
1078 (iota_view::_Sentinel::_M_equal): New member function.
1079 (iota_view::_Sentinel::operator==): Use it.
1080 (views::_Iota::operator()): Forward __f using the correct type.
1081 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
1082 with integers of different signedness, to appease iota_view's deduction
1083 guide.
1084 * testsuite/std/ranges/iota/iota_view.cc: Augment test.
1085
1086 2020-02-20 Jonathan Wakely <jwakely@redhat.com>
1087
1088 * include/bits/range_access.h (ranges::begin): Reject array of
1089 incomplete type.
1090 (ranges::end, ranges::size): Require arrays to be bounded.
1091 (ranges::data): Require lvalue or borrowed_range.
1092 (ranges::iterator_t): Remove constraint.
1093 * testsuite/std/ranges/access/begin.cc: Do not check array of
1094 incomplete type.
1095 * testsuite/std/ranges/access/begin_neg.cc: New test.
1096 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
1097 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
1098 * testsuite/std/ranges/access/ssize.cc: Do not check array of
1099 incomplete type.
1100
1101 * include/std/system_error (error_category::operator<=>)
1102 (operator<=>(const error_code&, const error_code&))
1103 (operator<=>(const error_condition&, const error_condition&)): Define
1104 for C++20.
1105 * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
1106 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
1107 test.
1108 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
1109 incorrect comment.
1110 * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
1111 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
1112 incorrect comment.
1113 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
1114 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
1115 incorrect comment.
1116 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
1117 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
1118 Remove incorrect comment.
1119 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
1120 test.
1121
1122 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
1123
1124 * include/std/thread (thread::id::operator<=>): Define for C++20.
1125 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
1126 functions in namespace std.
1127 * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
1128
1129 2020-02-19 Patrick Palka <ppalka@redhat.com>
1130
1131 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
1132 null terminator of the underlying string as part of the test_range.
1133 (main): Call test03.
1134
1135 2020-02-19 Jonathan Wakely <jwakely@redhat.com>
1136
1137 * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
1138 requirement (LWG 3385).
1139 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
1140 expected declaration.
1141
1142 * include/std/ranges (take_while_view, drop_view, drop_while_view)
1143 (elements_view:_Iterator): Initialize data members (LWG 3364).
1144
1145 * libsupc++/compare (three_way_comparable): Remove always-false check
1146 that should have been removed with weak_equality (P1959R0).
1147 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
1148
1149 * include/std/concepts (__detail::__partially_ordered_with): Move here
1150 from <compare>.
1151 (totally_ordered, totally_ordered_with): Use __partially_ordered_with
1152 to simplify definition (LWG 3331).
1153 * libsupc++/compare (__detail::__partially_ordered_with): Move to
1154 <concepts>.
1155
1156 * include/std/concepts (totally_ordered_with): Remove redundant
1157 requirement (LWG 3329).
1158
1159 * include/std/ranges (__detail::__convertible_to_non_slicing): New
1160 helper concept.
1161 (__detail::__pair_like_convertible_to): Remove.
1162 (__detail::__pair_like_convertible_from): Add requirements for
1163 non-slicing conversions.
1164 (subrange): Constrain constructors with __convertible_to_non_slicing.
1165 Remove constructors from pair-like types. Add new deduction guide.
1166 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
1167
1168 * include/bits/iterator_concepts.h (iter_move): Add declaration to
1169 prevent unqualified lookup finding a suitable declaration (LWG 3247).
1170
1171 * include/std/memory_resource (polymorphic_allocator::allocate)
1172 (polymorphic_allocator::allocate_object): Change type of exception to
1173 bad_array_new_length (LWG 3237).
1174 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
1175
1176 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
1177 * include/std/version (__cpp_lib_unwrap_ref): Likewise.
1178 * testsuite/20_util/unwrap_reference/1.cc: Check macro.
1179 * testsuite/20_util/unwrap_reference/3.cc: New test.
1180
1181 * include/std/numeric (midpoint(T8, T*)): Do not check for complete
1182 type during overload resolution, use static assert instead (LWG 3200).
1183 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
1184 incomplete type.
1185 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
1186
1187 * include/std/span (span(T (&)[N])): Use non-deduced context to
1188 prevent first parameter from interfering with class template argument
1189 deduction (LWG 3369).
1190 * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
1191 * testsuite/23_containers/span/lwg3255.cc: Check for construction from
1192 rvalues.
1193
1194 * include/std/span (span::const_iterator, span::const_reverse_iterator)
1195 (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
1196 Remove (LWG 3320).
1197 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
1198 and cend.
1199 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
1200 Likewise.
1201 * testsuite/20_util/specialized_algorithms/uninitialized_copy/
1202 constrained.cc: Likewise.
1203 * testsuite/20_util/specialized_algorithms/
1204 uninitialized_default_construct/constrained.cc: Likewise.
1205 * testsuite/20_util/specialized_algorithms/uninitialized_fill/
1206 constrained.cc: Likewise.
1207 * testsuite/20_util/specialized_algorithms/uninitialized_move/
1208 constrained.cc: Likewise.
1209 * testsuite/20_util/specialized_algorithms/
1210 uninitialized_value_construct/constrained.cc: Likewise.
1211
1212 * include/bits/range_access.h (range_size_t): Define alias template.
1213 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
1214 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
1215
1216 * include/std/ranges (filter_view, transform_view, take_view)
1217 (join_view, split_view, reverse_view): Remove commented-out converting
1218 constructors (LWG 3280).
1219
1220 * include/std/memory (uninitialized_construct_using_allocator): Use
1221 std::construct_at (LWG 3321).
1222
1223 * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
1224 (polymorphic_allocator::allocate_object)
1225 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
1226
1227 LWG 3379. "safe" in several library names is misleading
1228 * include/bits/range_access.h (enable_safe_range): Rename to
1229 enable_borrowed_range.
1230 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
1231 (safe_range): Rename to borrowed_range.
1232 * include/bits/ranges_algo.h: Adjust to use new names.
1233 * include/bits/ranges_algobase.h: Likewise.
1234 * include/bits/ranges_uninitialized.h: Likewise.
1235 * include/std/ranges: Likewise.
1236 (safe_iterator_t): Rename to borrowed_iterator_t.
1237 (safe_subrange_t): Rename to borrowed_subrange_t.
1238 * include/std/span: Adjust to use new names.
1239 * include/std/string_view: Likewise.
1240 * include/experimental/string_view: Likewise.
1241 * testsuite/std/ranges/access/begin.cc: Likewise.
1242 * testsuite/std/ranges/access/cbegin.cc: Likewise.
1243 * testsuite/std/ranges/access/cdata.cc: Likewise.
1244 * testsuite/std/ranges/access/cend.cc: Likewise.
1245 * testsuite/std/ranges/access/crbegin.cc: Likewise.
1246 * testsuite/std/ranges/access/crend.cc: Likewise.
1247 * testsuite/std/ranges/access/data.cc: Likewise.
1248 * testsuite/std/ranges/access/end.cc: Likewise.
1249 * testsuite/std/ranges/access/rbegin.cc: Likewise.
1250 * testsuite/std/ranges/access/rend.cc: Likewise.
1251 * testsuite/std/ranges/safe_range.cc: Likewise.
1252 * testsuite/std/ranges/safe_range_types.cc: Likewise.
1253 * testsuite/util/testsuite_iterators.h: Likewise.
1254
1255 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
1256 (tuple_element<1, const subrange<I, S, K>>): Add partial
1257 specializations (LWG 3398).
1258 * testsuite/std/ranges/subrange/tuple_like.cc: New test.
1259
1260 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
1261 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
1262 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
1263
1264 2020-02-18 Patrick Palka <ppalka@redhat.com>
1265
1266 P1983R0 Wording for GB301, US296, US292, US291, and US283
1267 * include/std/ranges (filter_view::pred): New member function.
1268 (join_view::_Iterator::_Iterator): Remove now-redundant comment since
1269 P1983R0 fixes the highlighted issue in the same way.
1270 (join_view::_Iterator<_Const>): Add friend
1271 join_view::_Iterator<!_Const>.
1272 (join_view::_M_inner): Remove mutable specifier, effectively reverting
1273 the proposed wording changes of P3278.
1274 (join_view::begin): Refine the condition for when to return a const
1275 iterator.
1276 (split_view::_OuterIter::_OuterIter): Adjust constraints.
1277 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
1278 exists and works.
1279
1280 2020-02-18 Jonathan Wakely <jwakely@redhat.com>
1281
1282 PR libstdc++/93818
1283 * include/std/ranges (_RangeAdaptor): Add deduction guide.
1284 (filter_view::_Iterator): Add alias _Vp_iter and use in place of
1285 iterator_t<_Vp>.
1286 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
1287 (transform_view::_Iterator): Add alias _Base_iter and use in place of
1288 iterator_t<_Base>.
1289 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
1290 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
1291 (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
1292 (split_view::_InnerIter::_S_iter_cat()): Likewise.
1293
1294 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
1295 assumption that long is wider than int.
1296 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
1297 * testsuite/20_util/integer_comparisons/less.cc: Likewise.
1298 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
1299 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
1300
1301 P1976R2 Fixed-size span construction from dynamic range
1302 * include/std/span (__cpp_lib_span): Update value.
1303 (span(It, size_type), span(It, End)): Make conditionally explicit. Add
1304 assertion.
1305 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
1306 constraints.
1307 (span::first<Count>(), span::last<Count>()): Use explicit type in
1308 return statement.
1309 (as_bytes, as_writable_bytes): Likewise.
1310 * include/std/version (__cpp_lib_span): Update value.
1311 * testsuite/23_containers/span/1.cc: Check new value.
1312 * testsuite/23_containers/span/2.cc: Check new value.
1313 * testsuite/23_containers/span/explicit.cc: New test.
1314
1315 * include/std/span (span::__is_compatible_array): Simplify alias
1316 template by using requires-clause.
1317 (span::__is_compatible_ref): New alias template for constraining
1318 constructors.
1319 (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
1320 (span(It, size_type), span(It, End)): Use __is_compatible_ref.
1321 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
1322 redundant parentheses.
1323 (span(R&&)): Add missing constraints.
1324
1325 * include/std/span (span): Reorder members and rename template
1326 parameters to match declarations in the C++2a working paper.
1327
1328 P2116R0 Remove tuple-like protocol support from fixed-extent span
1329 * include/std/span (get, tuple_size, tuple_element): Remove.
1330 * testsuite/23_containers/span/everything.cc: Remove checks for
1331 tuple-like API.
1332 * testsuite/23_containers/span/get_neg.cc: Remove.
1333 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
1334 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
1335 * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
1336
1337 2020-02-17 Patrick Palka <ppalka@redhat.com>
1338
1339 P2106R0 Alternative wording for GB315 and GB316
1340 * include/bits/ranges_algo.h (in_fun_result): New.
1341 (for_each_result, for_each_n_result): Change into an alias of
1342 in_fun_result.
1343 (in_in_result): New.
1344 (mismatch_result): Change into an alias of in_in_result.
1345 (copy_if_result): Change into an alias of in_out_result.
1346 (swap_ranges_result): Change into an alias of in_in_result.
1347 (unary_transform_result): Change into an alias of in_out_result.
1348 (in_in_out_result): New.
1349 (binary_transform_result): Change into an alias of in_in_out_result.
1350 (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
1351 remove_copy_result, unique_copy_result, reverse_copy_result,
1352 rotate_copy_result, partial_sort_copy_result): Change into an alias of
1353 in_out_result.
1354 (in_out_out_result): New.
1355 (partition_copy_result, merge_result): Change into an alias of
1356 in_out_out_result.
1357 (set_union_result, set_intersection_result): Change into an alias of
1358 in_in_out_result.
1359 (set_difference_result): Change into an alias of in_out_result.
1360 (set_symmetric_difference): Change into an alias of in_in_out_result.
1361 (min_max_result): New.
1362 (minmax_result, minmax_element_result): Change into an alias of
1363 min_max_result.
1364 (in_found_result): New.
1365 (next_permutation_result, prev_permutation_result): Change into an alias
1366 of in_found_result.
1367 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
1368 Adjust following changes to next_permutation_result and
1369 prev_permutation_result.
1370 * include/bits/ranges_algobase.h (in_out_result): New.
1371 (copy_result, move_result, move_backward_result, copy_backward_result,
1372 copy_n_result): Change into an alias of in_out_result.
1373 * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
1374 uninitialized_copy_n_result, uninitialized_move_result,
1375 uninitialized_move_n_result): Likewise.
1376 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
1377 structured bindings.
1378 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
1379
1380 P1243R4 Rangify new algorithms
1381 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
1382 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
1383 * testsuite/25_algorithms/clamp/constrained.cc: New test.
1384 * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
1385 * testsuite/25_algorithms/sample/constrained.cc: New test.
1386
1387 2020-02-17 Jonathan Wakely <jwakely@redhat.com>
1388
1389 P1964R2 Wording for boolean-testable
1390 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
1391 (__adjacent_find_fn): Cast result of predicate to bool.
1392 * include/std/concepts (__boolean): Remove.
1393 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
1394 new helper concepts.
1395 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
1396 (predicate): Use __boolean_testable instead of boolean.
1397 * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
1398 Likewise.
1399
1400 P1970R2 Consistency for size() functions: Add ranges::ssize
1401 * include/bits/range_access.h (_SSize, ssize): Define for C++20.
1402 * testsuite/std/ranges/access/ssize.cc: New test.
1403
1404 P1956R1 On the names of low-level bit manipulation functions
1405 * include/bits/hashtable_policy.h: Update comment.
1406 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
1407 (ispow2, ceil2, floor2, log2p1): Likewise.
1408 (__cpp_lib_int_pow2): Add feature test macro.
1409 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
1410 * include/std/memory (assume_aligned): Adjust use of ispow2.
1411 * include/std/version (__cpp_lib_int_pow2): Add.
1412 * libsupc++/new_opa.cc: Adjust use of __ispow2.
1413 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
1414 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
1415 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
1416 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
1417 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
1418 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
1419 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
1420 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
1421 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
1422 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
1423 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
1424 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
1425
1426 * include/std/charconv: Add comment.
1427
1428 PR libstdc++/92546 (partial)
1429 * include/bits/random.h (uniform_random_bit_generator): Move definition
1430 to <bits/uniform_int_dist.h>.
1431 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
1432 of <bits/random.h>.
1433 * include/bits/ranges_algobase.h: Do not include <cmath>.
1434 * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
1435 Move here.
1436 * include/std/ranges: Do not include <limits>.
1437 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
1438
1439 PR libstdc++/92546 (partial)
1440 * include/Makefile.am: Add new header.
1441 * include/Makefile.in: Regenerate.
1442 * include/bits/int_limits.h: New header.
1443 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
1444 numeric_limits with __detail::__int_limits.
1445 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
1446 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
1447 Likewise.
1448 * include/std/charconv (__to_chars_8, __from_chars_binary)
1449 (__from_chars_alpha_to_num, from_chars): Likewise.
1450 * include/std/memory_resource (polymorphic_allocator::allocate)
1451 (polymorphic_allocator::allocate_object): Likewise.
1452 * include/std/string_view (basic_string_view::_S_compare): Likewise.
1453 * include/std/utility (in_range): Likewise.
1454 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
1455 extra error about incomplete type __int_limits<bool>.
1456 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
1457 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
1458 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
1459 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
1460 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
1461 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
1462 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
1463 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
1464 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
1465 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
1466 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
1467 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
1468
1469 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
1470 value for partial_ordering::unordered.
1471
1472 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
1473 const-qualified expression variations.
1474 * include/std/concepts (copyable): Likewise.
1475
1476 * include/std/type_traits (__is_standard_integer): New helper trait.
1477 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
1478 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
1479 * include/std/version (__cpp_lib_integer_comparison_functions): Define.
1480 * testsuite/20_util/integer_comparisons/1.cc: New test.
1481 * testsuite/20_util/integer_comparisons/2.cc: New test.
1482 * testsuite/20_util/integer_comparisons/equal.cc: New test.
1483 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
1484 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
1485 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
1486 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
1487 * testsuite/20_util/integer_comparisons/in_range.cc: New test.
1488 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
1489 * testsuite/20_util/integer_comparisons/less.cc: New test.
1490 * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
1491 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
1492 * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
1493 * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
1494 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
1495
1496 2020-02-16 Patrick Palka <ppalka@redhat.com>
1497
1498 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
1499 Move code after an early exit constexpr if to under an else branch.
1500 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
1501
1502 2020-02-15 Patrick Palka <ppalka@redhat.com>
1503
1504 * include/bits/ranges_algo.h: Adjust whitespace and formatting.
1505 * include/bits/ranges_algobase.h: Likewise.
1506 * include/bits/ranges_uninitialized.h: Likewise.
1507
1508 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
1509 binary_search, copy_if, count, count_if, equal_range, find, find_end,
1510 find_first_of, find_if, find_if_not, for_each, generate, generate_n,
1511 includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
1512 is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
1513 lower_bound, make_heap, max, max_element, merge, min, min_element,
1514 minmax, minmax_element, mismatch, next_permutation, none_of,
1515 nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
1516 partition_point, pop_heap, prev_permutation, push_heap, remove,
1517 remove_copy, remove_copy_if, remove_if, replace, replace_copy,
1518 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
1519 search, search_n, set_difference, set_intersection,
1520 set_symmetric_difference, set_union, shuffle, sort, sort_heap,
1521 stable_partition, stable_sort, swap_ranges, transform, unique,
1522 unique_copy, upper_bound): Convert into function objects.
1523 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
1524 fill, move_backward, copy_backward): Likewise.
1525 * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
1526 uninitialized_default_construct_n, uninitialized_value_construct,
1527 uninitialized_value_construct_n, uninitialized_copy,
1528 uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
1529 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
1530 destroy, destroy_n): Likewise.
1531
1532 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
1533 (ranges::find_end): ... here.
1534 (ranges::__lexicographical_compare): Fold into ...
1535 (ranges::lexicographical_compare): ... here.
1536 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
1537 (ranges::equal): ... here.
1538
1539 2020-02-15 Jonathan Wakely <jwakely@redhat.com>
1540
1541 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
1542 * include/std/deque: Likewise.
1543 * include/std/forward_list: Likewise.
1544 * include/std/list: Likewise.
1545 * include/std/string: Likewise.
1546 * include/std/vector: Likewise.
1547 * include/std/version: Likewise.
1548 * testsuite/23_containers/deque/erasure.cc: Test for new value.
1549 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
1550 * testsuite/23_containers/list/erasure.cc: Likewise.
1551 * testsuite/23_containers/map/erasure.cc: Likewise.
1552 * testsuite/23_containers/set/erasure.cc: Likewise.
1553 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
1554 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
1555 * testsuite/23_containers/vector/erasure.cc: Likewise.
1556
1557 2020-02-15 Jonathan Wakely <jwakely@redhat.com>
1558
1559 * include/bits/random.h (uniform_random_bit_generator): Require min()
1560 and max() to be constant expressions and min() to be less than max().
1561 * testsuite/26_numerics/random/concept.cc: Check additional cases.
1562 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
1563
1564 2020-02-13 Patrick Palka <ppalka@redhat.com>
1565
1566 * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
1567 * include/Makefile.in: Regenerate.
1568 * include/bits/ranges_uninitialized.h: New header.
1569 * include/std/memory: Include it.
1570 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
1571 test.
1572 * .../uninitialized_copy/constrained.cc: New test.
1573 * .../uninitialized_default_construct/constrained.cc: New test.
1574 * .../uninitialized_fill/constrained.cc: New test.
1575 * .../uninitialized_move/constrained.cc: New test.
1576 * .../uninitialized_value_construct/constrained.cc: New test.
1577
1578 * include/Makefile.am: Add bits/ranges_algobase.h
1579 * include/Makefile.in: Regenerate.
1580 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
1581 existing #includes.
1582 (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
1583 __detail::__is_move_iterator, copy_result, move_result,
1584 __equal, equal, copy_result, move_result, move_backward_result,
1585 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
1586 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
1587 fill): Split out into ...
1588 * bits/range_algobase.h: ... this new header.
1589
1590 2020-02-12 Patrick Palka <ppalka@redhat.com>
1591
1592 LWG 3389 and LWG 3390
1593 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
1594 constructing the move_iterator with __i.
1595 (counted_iterator::counted_iterator): Use std::move when initializing
1596 M_current with __i.
1597 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
1598 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
1599
1600 2020-02-12 Sandra Loosemore <sandra@codesourcery.com>
1601
1602 PR libstdc++/79193
1603 PR libstdc++/88999
1604
1605 * configure: Regenerated.
1606
1607 2020-02-12 François Dumont <fdumont@gcc.gnu.org>
1608
1609 * include/bits/hashtable.h
1610 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
1611 missing std namespace qualification to forward call.
1612
1613 2020-02-09 Jonathan Wakely <jwakely@redhat.com>
1614
1615 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
1616 comment.
1617 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
1618
1619 * include/std/ranges: Fix non-ASCII characters in comment.
1620
1621 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
1622 equality comparison to be valid and return bool.
1623 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
1624 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
1625 type with ambiguous conversion to fundamental types.
1626 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
1627
1628 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
1629
1630 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
1631 Use remove_cvref_t.
1632 (readable_traits): Rename to indirectly_readable_traits.
1633 (readable): Rename to indirectly_readable.
1634 (writable): Rename to indirectly_writable.
1635 (__detail::__iter_exchange_move): Do not use remove_reference_t.
1636 (indirectly_swappable): Adjust requires expression parameter types.
1637 expression.
1638 * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
1639 (ranges::replace_if, ranges::generate_n, ranges::generate)
1640 (ranges::remove): Use new name for writable.
1641 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
1642 Use new name for readable.
1643 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
1644 new name for readable_traits.
1645 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
1646 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
1647 new definition of indirectly_readable.
1648
1649 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
1650 to take parameters of common_iterator, instead of the common_iterator
1651 type itself. Fix argument for __common_iter_has_arrow constraint.
1652 (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
1653
1654 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
1655
1656 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
1657 warning.
1658 (basic_istream_view::_Iterator::operator++()): Add missing return.
1659
1660 2020-02-07 Patrick Palka <ppalka@redhat.com>
1661
1662 * include/bits/ranges_algo.h: Remove extraneous &&.
1663
1664 * include/std/ranges (ranges::__detail::__stream_extractable,
1665 ranges::basic_istream_view, ranges::istream_view): Define.
1666 * testsuite/std/ranges/istream_view: New test.
1667
1668 Implement C++20 range adaptors
1669 * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
1670 (subrange::_S_store_size): Mark as const instead of constexpr to
1671 avoid what seems to be a bug in GCC.
1672 (__detail::__box): Give it defaulted copy and move constructors.
1673 (ranges::views::_Single::operator()): Mark constexpr.
1674 (ranges::views::_Iota::operator()): Mark constexpr.
1675 (__detail::Empty): Define.
1676 (ranges::views::__closure::_RangeAdaptor,
1677 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
1678 ranges::views::all, ranges::__detail::find_if,
1679 ranges::__detail::find_if_not, ranges::__detail::mismatch,
1680 ranges::detail::min, filter_view, ranges::views::filter, transform_view,
1681 ranges::views::transform, take_view, ranges::views::take,
1682 take_while_view, ranges::views::take_while, drop_view,
1683 ranges::views::drop, join_view, ranges::views::join,
1684 __detail::require_constant, __detail::tiny_range, split_view,
1685 ranges::views::split, ranges::views::_Counted, ranges::views::counted,
1686 common_view, ranges::views::common, reverse_view,
1687 ranges::views::reverse,
1688 ranges::views::__detail::__is_reversible_subrange,
1689 ranges::views::__detail::__is_reverse_view, reverse_view,
1690 ranges::views::reverse, __detail::__has_tuple_element, elements_view,
1691 ranges::views::elements, ranges::views::keys, ranges::views::values):
1692 Define.
1693 (views): Alias for ranges::views.
1694 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
1695 tuple_element<1, ranges::subrange>): New partial specializations.
1696 * testsuite/std/ranges/adaptors/all.cc: New test.
1697 * testsuite/std/ranges/adaptors/common.cc: Likewise.
1698 * testsuite/std/ranges/adaptors/counted.cc: Likewise.
1699 * testsuite/std/ranges/adaptors/drop.cc: Likewise.
1700 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
1701 * testsuite/std/ranges/adaptors/elements.cc: Likewise.
1702 * testsuite/std/ranges/adaptors/filter.cc: Likewise.
1703 * testsuite/std/ranges/adaptors/join.cc: Likewise.
1704 * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
1705 * testsuite/std/ranges/adaptors/split.cc: Likewise.
1706 * testsuite/std/ranges/adaptors/take.cc: Likewise.
1707 * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
1708 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
1709
1710 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
1711
1712 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
1713 type of enumerations and comparison category types.
1714 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
1715 (__cmp_cat::_Ncmp::unordered): Change value to 2.
1716 (partial_ordering::_M_value, weak_ordering::_M_value)
1717 (strong_ordering::_M_value): Change type to __cmp_cat::type.
1718 (partial_ordering::_M_is_ordered): Remove data member.
1719 (partial_ordering): Use second bit of _M_value for unordered. Adjust
1720 comparison operators.
1721 (weak_ordering::operator partial_ordering): Simplify to remove
1722 branches.
1723 (operator<=>(unspecified, weak_ordering)): Likewise.
1724 (strong_ordering::operator partial_ordering): Likewise.
1725 (strong_ordering::operator weak_ordering): Likewise.
1726 (operator<=>(unspecified, strong_ordering)): Likewise.
1727 * testsuite/18_support/comparisons/categories/partialord.cc: New test.
1728 * testsuite/18_support/comparisons/categories/strongord.cc: New test.
1729 * testsuite/18_support/comparisons/categories/weakord.cc: New test.
1730
1731 * include/std/ranges (iota_view::_Iterator): Fix typo in name of
1732 __cpp_lib_three_way_comparison macro and use deduced return type for
1733 operator<=>.
1734 * testsuite/std/ranges/iota/iterator.cc: New test.
1735
1736 2020-02-07 Patrick Palka <ppalka@redhat.com>
1737 Jonathan Wakely <jwakely@redhat.com>
1738
1739 Implement C++20 constrained algorithms
1740 * include/Makefile.am: Add new header.
1741 * include/Makefile.in: Regenerate.
1742 * include/std/algorithm: Include <bits/ranges_algo.h>.
1743 * include/bits/ranges_algo.h: New file.
1744 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
1745 * testsuite/25_algorithms/all_of/constrained.cc: New test.
1746 * testsuite/25_algorithms/any_of/constrained.cc: New test.
1747 * testsuite/25_algorithms/binary_search/constrained.cc: New test.
1748 * testsuite/25_algorithms/copy/constrained.cc: New test.
1749 * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
1750 * testsuite/25_algorithms/copy_if/constrained.cc: New test.
1751 * testsuite/25_algorithms/copy_n/constrained.cc: New test.
1752 * testsuite/25_algorithms/count/constrained.cc: New test.
1753 * testsuite/25_algorithms/count_if/constrained.cc: New test.
1754 * testsuite/25_algorithms/equal/constrained.cc: New test.
1755 * testsuite/25_algorithms/equal_range/constrained.cc: New test.
1756 * testsuite/25_algorithms/fill/constrained.cc: New test.
1757 * testsuite/25_algorithms/fill_n/constrained.cc: New test.
1758 * testsuite/25_algorithms/find/constrained.cc: New test.
1759 * testsuite/25_algorithms/find_end/constrained.cc: New test.
1760 * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
1761 * testsuite/25_algorithms/find_if/constrained.cc: New test.
1762 * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
1763 * testsuite/25_algorithms/for_each/constrained.cc: New test.
1764 * testsuite/25_algorithms/generate/constrained.cc: New test.
1765 * testsuite/25_algorithms/generate_n/constrained.cc: New test.
1766 * testsuite/25_algorithms/heap/constrained.cc: New test.
1767 * testsuite/25_algorithms/includes/constrained.cc: New test.
1768 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
1769 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
1770 * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
1771 * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
1772 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
1773 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
1774 test.
1775 * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
1776 * testsuite/25_algorithms/max/constrained.cc: New test.
1777 * testsuite/25_algorithms/max_element/constrained.cc: New test.
1778 * testsuite/25_algorithms/merge/constrained.cc: New test.
1779 * testsuite/25_algorithms/min/constrained.cc: New test.
1780 * testsuite/25_algorithms/min_element/constrained.cc: New test.
1781 * testsuite/25_algorithms/minmax/constrained.cc: New test.
1782 * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
1783 * testsuite/25_algorithms/mismatch/constrained.cc: New test.
1784 * testsuite/25_algorithms/move/constrained.cc: New test.
1785 * testsuite/25_algorithms/move_backward/constrained.cc: New test.
1786 * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
1787 * testsuite/25_algorithms/none_of/constrained.cc: New test.
1788 * testsuite/25_algorithms/nth_element/constrained.cc: New test.
1789 * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
1790 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
1791 * testsuite/25_algorithms/partition/constrained.cc: New test.
1792 * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
1793 * testsuite/25_algorithms/partition_point/constrained.cc: New test.
1794 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
1795 * testsuite/25_algorithms/remove/constrained.cc: New test.
1796 * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
1797 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
1798 * testsuite/25_algorithms/remove_if/constrained.cc: New test.
1799 * testsuite/25_algorithms/replace/constrained.cc: New test.
1800 * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
1801 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
1802 * testsuite/25_algorithms/replace_if/constrained.cc: New test.
1803 * testsuite/25_algorithms/reverse/constrained.cc: New test.
1804 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
1805 * testsuite/25_algorithms/rotate/constrained.cc: New test.
1806 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
1807 * testsuite/25_algorithms/search/constrained.cc: New test.
1808 * testsuite/25_algorithms/search_n/constrained.cc: New test.
1809 * testsuite/25_algorithms/set_difference/constrained.cc: New test.
1810 * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
1811 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
1812 test.
1813 * testsuite/25_algorithms/set_union/constrained.cc: New test.
1814 * testsuite/25_algorithms/shuffle/constrained.cc: New test.
1815 * testsuite/25_algorithms/sort/constrained.cc: New test.
1816 * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
1817 * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
1818 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
1819 * testsuite/25_algorithms/transform/constrained.cc: New test.
1820 * testsuite/25_algorithms/unique/constrained.cc: New test.
1821 * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
1822 * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
1823
1824 2020-02-06 Jonathan Wakely <jwakely@redhat.com>
1825
1826 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
1827 number in comment. Fix indentation.
1828
1829 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
1830 redundant _GLIBCXX20_CONSTEXPR.
1831
1832 * include/std/ranges (viewable_range): Replace decay_t with
1833 remove_cvref_t (LWG 3375).
1834
1835 2020-02-05 Jonathan Wakely <jwakely@redhat.com>
1836
1837 * include/bits/iterator_concepts.h (iter_reference_t)
1838 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
1839 Remove workarounds for PR c++/67704.
1840 * testsuite/24_iterators/aliases.cc: New test.
1841
1842 2020-02-05 Patrick Palka <ppalka@redhat.com>
1843
1844 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
1845 when initializing _M_current.
1846 (move_iterator::base): Split into two overloads differing in
1847 ref-qualifiers as in P1207R4 for C++20.
1848
1849 2020-02-04 Jonathan Wakely <jwakely@redhat.com>
1850
1851 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
1852 use.
1853
1854 PR libstdc++/93562
1855 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
1856 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
1857 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
1858
1859 2020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
1860
1861 * configure: Regenerate.
1862
1863 2020-01-31 Patrick Palka <ppalka@redhat.com>
1864
1865 * testsuite/24_iterators/range_operations/distance.cc: Do not assume
1866 test_range::end() returns the same type as test_range::begin().
1867 * testsuite/24_iterators/range_operations/next.cc: Likewise.
1868 * testsuite/24_iterators/range_operations/prev.cc: Likewise.
1869 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
1870 Always return a sentinel<I>.
1871
1872 2020-01-29 Jonathan Wakely <jwakely@redhat.com>
1873
1874 PR libstdc++/92895
1875 * include/std/stop_token (stop_token::stop_possible()): Call new
1876 _M_stop_possible() function.
1877 (stop_token::stop_requested()): Do not use stop_possible().
1878 (stop_token::binary_semaphore): New class, as temporary stand-in for
1879 std::binary_semaphore.
1880 (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
1881 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
1882 New data members for symchronization with stop_callback destruction.
1883 (stop_token::_Stop_cb::_Stop_cb): Make non-template.
1884 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
1885 Remove.
1886 (stop_token::_Stop_cb::_M_run): New member function.
1887 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
1888 Remove.
1889 (stop_token::_Stop_state::_M_owners): New data member to track
1890 reference count for ownership.
1891 (stop_token::_Stop_state::_M_value): New data member combining a
1892 spinlock, the stop requested flag, and the reference count for
1893 associated stop_source objects.
1894 (stop_token::_Stop_state::_M_requester): New data member for
1895 synchronization with stop_callback destruction.
1896 (stop_token::_Stop_state::_M_stop_possible()): New member function.
1897 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
1898 of _M_value.
1899 (stop_token::_Stop_state::_M_add_owner)
1900 (stop_token::_Stop_state::_M_release_ownership)
1901 (stop_token::_Stop_state::_M_add_ssrc)
1902 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
1903 updating reference counts.
1904 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
1905 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
1906 (stop_token::_Stop_state::_M_try_lock)
1907 (stop_token::_Stop_state::_M_try_lock_and_stop)
1908 (stop_token::_Stop_state::_M_do_try_lock): New member functions for
1909 managing spinlock.
1910 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
1911 read and update state. Release lock while running callbacks. Use new
1912 data members to synchronize with callback destruction.
1913 (stop_token::_Stop_state::_M_remove_callback): Likewise.
1914 (stop_token::_Stop_state::_M_register_callback): Use atomic operations
1915 to read and update state.
1916 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
1917 replacing shared_ptr.
1918 (stop_source::stop_source(const stop_source&)): Update reference count.
1919 (stop_source::operator=(const stop_source&)): Likewise.
1920 (stop_source::~stop_source()): Likewise.
1921 (stop_source::stop_source(stop_source&&)): Define as defaulted.
1922 (stop_source::operator=(stop_source&&)): Establish postcondition on
1923 parameter.
1924 (stop_callback): Enforce preconditions on template parameter. Replace
1925 base class with data member of new _Cb_impl type.
1926 (stop_callback::stop_callback(const stop_token&, Cb&&))
1927 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
1928 (stop_callback::_Cb_impl): New type wrapping _Callback member and
1929 defining the _S_execute member function.
1930 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
1931 test.
1932 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
1933 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
1934 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
1935 New test.
1936 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
1937 test.
1938 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
1939 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
1940 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
1941 test.
1942
1943 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
1944 three_way_comparable_with.
1945 (__detail::__3way_cmp_with): Remove workaround for fixed bug.
1946 (compare_three_way::operator()): Remove redundant constraint from
1947 requires-clause.
1948 (__detail::_Synth3way::operator()): Use three_way_comparable_with
1949 instead of workaround.
1950 * testsuite/18_support/comparisons/object/93479.cc: Prune extra
1951 output due to simplified constraints on compare_three_way::operator().
1952
1953 PR libstdc++/93479
1954 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
1955 * testsuite/18_support/comparisons/object/93479.cc: New test.
1956
1957 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
1958 returns the same type as test_range::begin(). Add comments.
1959 * testsuite/std/ranges/access/rbegin.cc: Likewise.
1960 * testsuite/std/ranges/access/rend.cc: Likewise.
1961 * testsuite/std/ranges/range.cc: Do not assume the sentinel for
1962 test_range is the same as its iterator type.
1963 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
1964 operator- overloads to satisfy sized_sentinel_for when the iterator
1965 satisfies random_access_iterator.
1966
1967 2020-01-28 Jonathan Wakely <jwakely@redhat.com>
1968
1969 PR libstdc++/93470
1970 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
1971 static assertion to object types.
1972
1973 PR libstdc++/93325
1974 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
1975 clock_gettime instead of explicit glibc version check.
1976 * configure: Regenerate.
1977
1978 2020-01-28 Martin Liska <mliska@suse.cz>
1979
1980 PR libstdc++/93478
1981 * include/std/atomic: Fix typo.
1982 * include/std/optional: Likewise.
1983
1984 2020-01-27 Andrew Burgess <andrew.burgess@embecosm.com>
1985
1986 * configure: Regenerate.
1987
1988 2020-01-27 Jonathan Wakely <jwakely@redhat.com>
1989
1990 PR libstdc++/93426
1991 * include/std/span (span): Fix deduction guide.
1992 * testsuite/23_containers/span/deduction.cc: New test.
1993
1994 2020-01-24 Jonathan Wakely <jwakely@redhat.com>
1995
1996 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
1997 (__cmp_cat::_Ord::equivalent): Add enumerator.
1998 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
1999 and greater.
2000 (partial_ordering, weak_ordering, strong_ordering): Remove
2001 constructors taking __cmp_cat::_Eq parameters. Use renamed
2002 enumerators.
2003
2004 2020-01-24 Maciej W. Rozycki <macro@wdc.com>
2005
2006 * acinclude.m4: Handle `--with-toolexeclibdir='.
2007 * Makefile.in: Regenerate.
2008 * aclocal.m4: Regenerate.
2009 * configure: Regenerate.
2010 * doc/Makefile.in: Regenerate.
2011 * include/Makefile.in: Regenerate.
2012 * libsupc++/Makefile.in: Regenerate.
2013 * po/Makefile.in: Regenerate.
2014 * python/Makefile.in: Regenerate.
2015 * src/Makefile.in: Regenerate.
2016 * src/c++11/Makefile.in: Regenerate.
2017 * src/c++17/Makefile.in: Regenerate.
2018 * src/c++98/Makefile.in: Regenerate.
2019 * src/filesystem/Makefile.in: Regenerate.
2020 * testsuite/Makefile.in: Regenerate.
2021
2022 2020-01-23 Alexandre Oliva <oliva@adacore.com>
2023
2024 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
2025 * configure: Rebuild.
2026
2027 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
2028
2029 2020-01-23 Jonathan Wakely <jwakely@redhat.com>
2030
2031 PR libstdc++/91947
2032 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
2033 rule.
2034 * include/Makefile.in: Regenerate.
2035
2036 2020-01-20 Jonathan Wakely <jwakely@redhat.com>
2037
2038 * doc/xml/faq.xml: Fix grammar.
2039 * doc/xml/manual/appendix_contributing.xml: Improve instructions.
2040 * doc/xml/manual/spine.xml: Update copyright years.
2041 * doc/html/*: Regenerate.
2042
2043 2020-01-19 Eric S. Raymond <esr@thyrsus.com>
2044
2045 * doc/xml/faq.xml: Update for SVN -> Git transition.
2046 * doc/xml/manual/appendix_contributing.xml: Likewise.
2047 * doc/xml/manual/status_cxx1998.xml: Likewise.
2048 * doc/xml/manual/status_cxx2011.xml: Likewise.
2049 * doc/xml/manual/status_cxx2014.xml: Likewise.
2050 * doc/xml/manual/status_cxx2017.xml: Likewise.
2051 * doc/xml/manual/status_cxx2020.xml: Likewise.
2052 * doc/xml/manual/status_cxxtr1.xml: Likewise.
2053 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
2054
2055 2020-01-18 Iain Sandoe <iain@sandoe.co.uk>
2056
2057 * include/Makefile.am: Add coroutine to the std set.
2058 * include/Makefile.in: Regenerated.
2059 * include/std/coroutine: New file.
2060
2061 2020-01-17 Jonathan Wakely <jwakely@redhat.com>
2062
2063 PR libstdc++/92376
2064 * include/bits/c++config: Only do PSTL config when the header is
2065 present, to fix freestanding.
2066 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
2067 functions if they were detected by configure.
2068
2069 2020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de>
2070 Matthew Bauer <mjbauer95@gmail.com>
2071 Jonathan Wakely <jwakely@redhat.com>
2072
2073 PR bootstrap/64271 (partial)
2074 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
2075 to unsigned short.
2076 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
2077 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
2078 definitions with NetBSD upstream.
2079 (ctype_base::blank): Use _CTYPE_BL.
2080 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
2081 Declaration.
2082 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
2083 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
2084 parameters to unsigned char.
2085 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
2086
2087 2020-01-16 François Dumont <fdumont@gcc.gnu.org>
2088
2089 PR libstdc++/91263
2090 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
2091 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
2092 (_Equality_base): Remove.
2093 (_Equality<>::_M_equal): Review implementation. Use
2094 std::is_permutation.
2095 * testsuite/23_containers/unordered_multiset/operators/1.cc
2096 (Hash, Equal, test02, test03): New.
2097 * testsuite/23_containers/unordered_set/operators/1.cc
2098 (Hash, Equal, test02, test03): New.
2099
2100 2020-01-15 Jonathan Wakely <jwakely@redhat.com>
2101
2102 PR libstdc++/93267
2103 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
2104 Move here from <bits/range_access.h> and define using __int128 when
2105 available.
2106 (__is_integer_like, __is_signed_integer_like): Move here from
2107 <bits/range_access.h>.
2108 (weakly_incrementable): Use __is_signed_integer_like.
2109 * include/bits/range_access.h (__max_diff_type, __max_size_type)
2110 (__is_integer_like, __is_signed_integer_like): Move to
2111 <bits/iterator_concepts.h>.
2112 (__make_unsigned_like_t): Move here from <ranges>.
2113 * include/std/ranges (__make_unsigned_like_t): Move to
2114 <bits/range_access.h>.
2115 (iota_view): Replace using-directive with using-declarations.
2116 * testsuite/std/ranges/iota/93267.cc: New test.
2117 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
2118
2119 2020-01-13 Jonathan Wakely <jwakely@redhat.com>
2120
2121 PR libstdc++/93244
2122 * include/bits/fs_path.h (path::generic_string<C,A>)
2123 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
2124 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
2125 root-dir is converted to forward slash in generic pathname.
2126 * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
2127 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
2128
2129 PR libstdc++/58605
2130 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
2131 Define.
2132 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
2133 (__atomic_float): Add default member initializer for C++20.
2134 * include/std/atomic (atomic): Likewise.
2135 (atomic::atomic()): Remove noexcept-specifier on default constructor.
2136 * include/std/version (__cpp_lib_atomic_value_initialization): Define.
2137 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
2138 number.
2139 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
2140 * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
2141 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
2142 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
2143 expected result for is_trivially_default_constructible.
2144 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
2145 * testsuite/29_atomics/atomic_float/value_init.cc: New test.
2146 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
2147 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
2148 * testsuite/29_atomics/atomic_integral/cons/value_init.cc
2149 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
2150 expected results for is_trivially_default_constructible.
2151 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
2152 new test generator.
2153
2154 2020-01-10 Jonathan Wakely <jwakely@redhat.com>
2155
2156 * testsuite/util/testsuite_iterators.h: Improve comment.
2157
2158 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
2159 initialization syntax.
2160
2161 PR libstdc++/92285
2162 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
2163 of base class independent of __cplusplus value.
2164 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
2165 type defined in the base class
2166 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
2167 * testsuite/24_iterators/istreambuf_iterator/requirements/
2168 base_classes.cc: Adjust expected base class for C++98.
2169
2170 2020-01-09 Olivier Hainque <hainque@adacore.com>
2171
2172 * doc/xml/manual/appendix_contributing.xml: Document _C2
2173 as a reserved identifier, by VxWorks.
2174 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
2175 * include/bits/stl_multimap.h: Likewise.
2176
2177 2020-01-09 Jonathan Wakely <jwakely@redhat.com>
2178
2179 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
2180 (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
2181 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
2182 partial specialization to disambiguate the two constrained
2183 specializations.
2184
2185 * include/experimental/type_traits (experimental::is_pod_v): Disable
2186 -Wdeprecated-declarations warnings around reference to std::is_pod.
2187 * include/std/type_traits (is_pod_v): Likewise.
2188 * testsuite/18_support/max_align_t/requirements/2.cc: Also check
2189 is_standard_layout and is_trivial. Do not check is_pod for C++20.
2190 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
2191 Add -Wno-deprecated for C++20.
2192 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
2193 * testsuite/20_util/is_pod/value.cc: Likewise.
2194 * testsuite/experimental/type_traits/value.cc: Likewise.
2195
2196 2020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
2197
2198 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
2199 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
2200 * testuite/20_util/is_pod/deprecated-2a.cc: New test.
2201
2202 2020-01-09 Jonathan Wakely <jwakely@redhat.com>
2203
2204 PR libstdc++/93205
2205 * include/bits/random.h (operator>>): Check stream operation succeeds.
2206 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
2207 typedefs.
2208 (operator>>): Remove redundant __istream_type typedefs. Check stream
2209 operations succeed.
2210 (__extract_params): New function to fill a vector from a stream.
2211 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
2212
2213 PR libstdc++/93208
2214 * config/abi/pre/gnu.ver: Add new exports.
2215 * include/std/memory_resource (memory_resource::~memory_resource()):
2216 Do not define inline.
2217 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
2218 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
2219 Define.
2220 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
2221 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
2222
2223 2020-01-09 François Dumont <fdumont@gcc.gnu.org>
2224
2225 PR libstdc++/92124
2226 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
2227 template alias.
2228 (_Hashtable<>::__fwd_value_for): New.
2229 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
2230 parameter.
2231 (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
2232 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
2233 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
2234 with std::move.
2235 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
2236 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
2237 Adapt.
2238 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
2239 Adapt.
2240 * testsuite/23_containers/unordered_set/92124.cc: New.
2241
2242 2020-01-08 Jonathan Wakely <jwakely@redhat.com>
2243
2244 PR libstdc++/93201
2245 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
2246 detailed error reporting for remove_all. Check result of recursive
2247 call before incrementing iterator.
2248 (remove_all(const path&), remove_all(const path&, error_code&)): Use
2249 do_remove_all.
2250 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
2251 result of recursive call before incrementing iterator.
2252 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
2253 are reported correctly.
2254 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
2255
2256 2020-01-07 Thomas Rodgers <trodgers@redhat.com>
2257
2258 * include/std/condition_variable
2259 (condition_variable_any::wait_on): Rename to match current draft
2260 standard.
2261 (condition_variable_any::wait_on_until): Likewise.
2262 (condition_variable_any::wait_on_for): Likewise.
2263 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
2264 Adjust tests to account for renamed methods.
2265
2266 2020-01-07 François Dumont <fdumont@gcc.gnu.org>
2267
2268 PR libstdc++/92124
2269 * include/bits/stl_tree.h
2270 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
2271 std::move_if_noexcept by std::move.
2272 * testsuite/23_containers/map/92124.cc: New.
2273 * testsuite/23_containers/set/92124.cc: New.
2274
2275 2020-01-06 Jonathan Wakely <jwakely@redhat.com>
2276
2277 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
2278 (stop_source): Likewise (LWG 3362).
2279 * testsuite/30_threads/stop_token/stop_source.cc: Test equality
2280 comparisons.
2281
2282 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
2283 (lexicographical_compare_three_way): Do not depend on
2284 __cpp_lib_concepts.
2285 * include/std/version (__cpp_lib_three_way_comparison): Only define
2286 when __cpp_lib_concepts is defined.
2287 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
2288
2289 2020-01-03 Jonathan Wakely <jwakely@redhat.com>
2290
2291 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
2292 Only define four-argument overload when __cpp_lib_concepts is defined.
2293
2294 2020-01-01 John David Anglin <danglin@gcc.gnu.org>
2295
2296 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
2297
2298 2020-01-01 Jakub Jelinek <jakub@redhat.com>
2299
2300 Update copyright years.
2301 \f
2302 Copyright (C) 2020 Free Software Foundation, Inc.
2303
2304 Copying and distribution of this file, with or without modification,
2305 are permitted in any medium without royalty provided the copyright
2306 notice and this notice are preserved.