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