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