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