1 2020-03-27 Jonathan Wakely <jwakely@redhat.com>
3 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
4 (reverse_iterator::iterator_category): Define for C++20.
5 (reverse_iterator): Define comparison operators correctly for C++20.
6 (__normal_iterator): Add constraints to comparison operators for C++20.
7 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
8 overload for input iterators.
9 (move_iterator): Add constraints to comparison operators for C++20.
10 Define operator<=> for C++20.
11 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
12 * testsuite/24_iterators/move_iterator/move_only.cc: New test.
13 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
14 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
16 * include/bits/iterator_concepts.h (__detail::__decay_copy)
17 (__detail::__member_begin, __detail::__adl_begin): Move here from
18 <bits/range_access.h>.
19 (__detail::__ranges_begin, __detail::__range_iter_t): Define.
20 * bits/range_access.h (__cust_access::__decay_copy)
21 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to
22 <bits/iterator_concepts.h>.
23 (ranges::iterator_t): Use __detail::__range_iter_t.
24 * include/bits/stl_iterator.h (back_insert_iterator): Simplify
25 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
26 (front_insert_iterator): Likewise.
27 (insert_iterator): Implement changes from P0896R4 for C++20.
28 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
29 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
30 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
31 for inclusion in synopsis_c++20.cc which expects different signatures
32 for some function templates.
33 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
35 * include/std/type_traits (__is_array_convertible): Move definition
36 to immediately after is_convertible.
38 2020-03-26 Jonathan Wakely <jwakely@redhat.com>
40 * include/std/chrono (chrono::days, chrono::weeks, chrono::years)
41 (chrono::months, chrono::sys_days, chrono::local_t)
42 (chrono::local_time, chrono::local_seconds, chrono::local_days):
44 (chrono::time_point): Add missing static assert.
45 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
46 * testsuite/std/time/clock/file/overview.cc: New test.
47 * testsuite/std/time/clock/file/members.cc: New test.
48 * testsuite/std/time/syn_c++20.cc: New test.
50 2020-03-25 Mike Crowe <mac@mcrowe.com>
52 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
54 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
57 2020-03-25 Jonathan Wakely <jwakely@redhat.com>
59 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
60 * include/std/chrono (filesystem::__file_clock): Here.
61 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
62 Define public member functions for C++20.
63 (is_clock, is_clock_v): Define traits for C++20.
64 * include/std/condition_variable (condition_variable::wait_until): Add
65 check for valid clock.
66 * include/std/future (_State_baseV2::wait_until): Likewise.
67 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
68 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
70 * include/std/thread (this_thread::sleep_until): Likewise.
71 * testsuite/30_threads/condition_variable/members/2.cc: Qualify
72 slow_clock with new namespace.
73 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New
75 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
77 * testsuite/30_threads/future/members/clock_neg.cc: New test.
78 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
79 Qualify slow_clock with new namespace.
80 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/
81 clock_neg.cc: New test.
82 * testsuite/30_threads/shared_future/members/clock_neg.cc: New
84 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
85 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
87 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
88 slow_clock with new namespace.
89 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
90 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
92 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
93 * testsuite/std/time/traits/is_clock.cc: New test.
94 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
97 2020-03-21 Jonathan Wakely <jwakely@redhat.com>
100 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
101 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
102 Improve test coverage.
105 * include/bits/fs_path.h (path::_S_str_convert): Replace first
106 parameter with basic_string_view so that strings with different
107 allocators can be accepted.
108 (path::generic_string<C,T,A>()): Use basic_string object that uses the
109 right allocator type.
110 * testsuite/27_io/filesystem/path/generic/94242.cc: New test.
111 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
114 2020-03-18 Jonathan Wakely <jwakely@redhat.com>
117 * include/std/type_traits (__is_nt_default_constructible_atom): Remove.
118 (__is_nt_default_constructible_impl): Remove.
119 (__is_nothrow_default_constructible_impl): Remove.
120 (__is_nt_constructible_impl): Add bool template parameter. Adjust
121 partial specializations.
122 (__is_nothrow_constructible_impl): Replace class template with alias
124 (is_nothrow_default_constructible): Derive from alias template
125 __is_nothrow_constructible_impl instead of
126 __is_nothrow_default_constructible_impl.
127 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
129 * include/std/stop_token (stop_token::_Stop_state_ref): Define
130 comparison operators explicitly if the compiler won't synthesize them.
132 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
133 __cpp_lib_concepts before using iter_reference_t.
134 * include/bits/stream_iterator.h (istream_iterator): Check
135 __cpp_lib_concepts before using default_sentinel_t.
136 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
139 * include/experimental/executor (executor::executor(Executor)): Call
140 make_shared directly instead of _M_create. Create _Tgt1 object.
141 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
142 Call allocate_shared directly instead of _M_create. Create _Tgt2
144 (executor::target_type): Add cast needed for new _Tgt interface.
145 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
146 (executor::_Tgt): Define the same interface whether RTTI is enabled or
148 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use
149 std::type_info in the interface.
150 (executor::_Tgt::_M_func): Add data member.
151 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
152 (executor::_Tgt1::_S_func): Define function to access target without
154 (executor::_M_create): Remove.
155 (operator==, operator!=): Simplify comparisons for executor.
156 * include/experimental/socket (is_error_code_enum<socket_errc>):
157 Define specialization before use.
158 * testsuite/experimental/net/executor/1.cc: New test.
160 2020-03-16 Jonathan Wakely <jwakely@redhat.com>
163 * include/experimental/executor (service_already_exists): Add default
164 constructor. Declare make_service to be a friend.
165 * testsuite/experimental/net/execution_context/make_service.cc: New
168 2020-03-12 Jonathan Wakely <jwakely@redhat.com>
170 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
171 a null pointer to functions with nonnull(1) attribute.
173 2020-03-11 Patrick Palka <ppalka@redhat.com>
175 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
176 'address' -> 'std::__addressof'.
177 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
178 a non-forward input_range.
179 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
180 default constructor protected instead of deleted, like with
181 input_iterator_wrapper.
182 (test_range::iterator): Add comment explaining that this type is used
183 only when the underlying wrapper is input_iterator_wrapper or
184 output_iterator_wrapper. Remove delegating defaulted constructor so
185 that the inherited default constructor is used instead.
187 LWG 3286 ranges::size is not required to be valid after a call to
188 ranges::begin on an input range
189 * include/std/ranges (subrange::subrange): Split single-argument
190 constructor into two, one constrained by _S_store_size and another by
192 (take_view::begin): Call size() before calling ranges::begin(_M_base).
193 * testsuite/std/ranges/adaptors/lwg3286.cc: New test.
194 * testsuite/std/ranges/subrange/lwg3286.cc: New test.
196 2020-03-10 Jonathan Wakely <jwakely@redhat.com>
198 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
199 instead of _M_current.
200 (split_view::_OuterIter::operator++): Likewise.
202 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
203 (transform_view::_Iterator::operator*): Add noexcept-specifier.
204 (transform_view::_Iterator::iter_move): Inline __iter_move body here.
205 (split_view::_OuterIter::__current): Add noexcept.
206 (split_view::_InnerIter::__iter_swap): Remove.
207 (split_view::_InnerIter::__iter_move): Remove.
208 (split_view::_InnerIter::_M_i_current): New accessors.
209 (split_view::_InnerIter::__at_end): Use _M_i_current().
210 (split_view::_InnerIter::operator*): Likewise.
211 (split_view::_InnerIter::operator++): Likewise.
212 (iter_move(const _InnerIter&)): Likewise.
213 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
214 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
215 for iter_move and iter_swap on split_view's inner iterator.
218 * include/std/ranges (ranges::transform_view::_Iterator::iter_move):
219 Change expression in noexcept-specifier to match function body.
221 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
222 comment explaining multiple dg-do directives.
223 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
224 so test is run as well as compiled.
226 2020-03-09 Jonathan Wakely <jwakely@redhat.com>
229 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
230 handle concatenations that change the type of the first component.
231 (path::operator+=(basic_string_view<value_type>)): Likewise.
232 * testsuite/27_io/filesystem/path/concat/94063.cc: New test.
234 2020-03-06 Patrick Palka <ppalka@redhat.com>
236 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend
237 join_view::_Sentinel<!_Const>.
238 * testsuite/std/ranges/adaptors/join.cc: Augment test.
241 * include/bits/range_access.h (__cust_access::_Empty::operator()):
242 Declare return type to be bool instead of auto.
243 * testsuite/std/ranges/adaptors/93978.cc: New test.
245 2020-03-06 Jonathan Wakely <jwakely@redhat.com>
248 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
249 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
250 second argument to __glibcxx_rwlock_init.
251 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
254 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
255 test to not fail due to PR 94063.
256 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
257 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
259 2020-03-06 Andreas Krebbel <krebbel@linux.ibm.com>
261 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
264 2020-03-05 Jonathan Wakely <jwakely@redhat.com>
266 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
267 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
268 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
269 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
270 for return value, and in comparison.
271 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
274 * include/std/string_view: Include <bits/ostream_insert.h>.
275 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
277 2020-03-04 Jonathan Wakely <jwakely@redhat.com>
279 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
281 2020-03-04 Patrick Palka <ppalka@redhat.com>
284 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
285 condition for when to use memset, making sure to additionally check that
286 the output pointer's value type is a non-volatile byte type. Instead of
287 requiring that the fill type is a byte type, just require that it's an
289 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
291 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
293 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
295 * testsuite/25_algorithms/fill/94017.cc: New test.
296 * testsuite/25_algorithms/fill_n/94017.cc: New test.
298 LWG 3355 The memory algorithms should support move-only input iterators
300 * include/bits/ranges_uninitialized.h
301 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
302 to copy __ifirst, which could be a move-only input iterator. Use
303 operator- instead of ranges::distance to compute distance from a sized
305 (__uninitialized_copy_n_fn::operator()): Likewise.
306 (__uninitialized_move_fn::operator()): Likewise.
307 (__uninitialized_move_n_fn::operator()): Likewise.
308 (__uninitialized_destroy_fn::operator()): Use std::move to avoid
309 attempting to copy __first.
310 (__uninitialized_destroy_n_fn::operator()): Likewise.
311 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
313 * .../specialized_algorithms/uninitialized_copy/constrained.cc:
315 * .../specialized_algorithms/uninitialized_move/constrained.cc:
318 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
319 protected instead of private.
320 (test_sized_range_sized_sent): New.
322 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
323 New testsuite iterator.
324 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
325 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
327 * include/bits/ranges_uninitialized.h
328 (uninitialized_copy_fn::operator()): Pass a reference type as the first
329 argument to is_nothrow_assignable_v.
330 (uninitialized_copy_fn::operator()): Likewise.
331 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result
332 with the input iterator stripped of its move_iterator.
333 (uninitialized_move_n_fn::operator()): Likewise.
334 (uninitialized_fill_fn::operator()): Pass a reference type as the first
335 argument to is_nothrow_assignable_v.
336 (uninitialized_fill_n_fn::operator()): Likewise.
338 2020-03-03 Jonathan Wakely <jwakely@redhat.com>
341 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
342 traits to control when to use memmove and memcmp optimizations.
343 (__is_nonvolatile_trivially_copyable): New helper trait.
344 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
345 use memcmp optimization with volatile data.
346 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
347 (__copy_or_move, __copy_or_move_backward): Use __memcpyable.
348 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
349 (__copy_move_backward_a2): Likewise.
350 (__equal_aux1): Use __memcmpable.
351 (__lexicographical_compare_aux): Do not use memcmp optimization with
353 * testsuite/25_algorithms/copy/94013.cc: New test.
354 * testsuite/25_algorithms/copy_backward/94013.cc: New test.
355 * testsuite/25_algorithms/equal/94013.cc: New test.
356 * testsuite/25_algorithms/fill/94013.cc: New test.
357 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
358 * testsuite/25_algorithms/move/94013.cc: New test.
359 * testsuite/25_algorithms/move_backward/94013.cc: New test.
361 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
362 Avoid redundant iterator comparisons (LWG 3410).
364 2020-03-02 Jonathan Wakely <jwakely@redhat.com>
367 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to
369 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
371 * include/std/ranges (__detail::__maybe_empty_t): Rename to
373 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
375 * include/bits/ranges_algo.h (shift_right): Add 'typename' to
378 2020-03-01 H.J. Lu <hongjiu.lu@intel.com>
380 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
382 2020-02-29 John David Anglin <danglin@gcc.gnu.org>
384 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
385 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
386 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
387 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
388 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
390 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
391 Add libatomic option.
392 * testsuite/30_threads/jthread/jthread.cc: Likewise.
394 2020-02-29 François Dumont <fdumont@gcc.gnu.org>
396 * include/bits/stl_algo.h
397 (__find_if, __count_if, __is_permutation, std::is_permutation): Move...
398 * include/bits/stl_algobase.h: ...here.
399 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
401 2020-02-29 John David Anglin <danglin@gcc.gnu.org>
403 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
405 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
407 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
408 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
409 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
410 * testsuite/30_threads/stop_token/stop_source.cc: Likewise.
411 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
412 * testsuite/30_threads/stop_token/stop_token.cc: Likewise.
413 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
417 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
419 2020-02-28 Patrick Palka <ppalka@redhat.com>
422 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
423 Fix condition for when to use memcmp, making it consistent with the
424 corresponding condition used in std::lexicographical_compare.
425 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
427 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
428 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to
429 existing signatures for C++2a.
431 2020-02-28 Jonathan Wakely <jwakely@redhat.com>
433 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
434 test instead of just compiling it.
436 2020-02-28 Patrick Palka <ppalka@redhat.com>
438 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
439 whenever the underlying range models common_range.
441 * include/std/ranges (__detail::_CachedPosition): New struct.
442 (views::filter_view::_S_needs_cached_begin): New member variable.
443 (views::filter_view::_M_cached_begin): New member variable.
444 (views::filter_view::begin): Use _M_cached_begin to cache its
446 (views::drop_view::_S_needs_cached_begin): New static member variable.
447 (views::drop_view::_M_cached_begin): New member variable.
448 (views::drop_view::begin): Use _M_cached_begin to cache its result
449 when _S_needs_cached_begin.
450 (views::drop_while_view::_M_cached_begin): New member variable.
451 (views::drop_while_view::begin): Use _M_cached_begin to cache its
453 (views::reverse_view::_S_needs_cached_begin): New static member
455 (views::reverse_view::_M_cached_begin): New member variable.
456 (views::reverse_view::begin): Use _M_cached_begin to cache its result
457 when _S_needs_cached_begin.
458 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
459 drop_view::begin caches its result.
460 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
461 that drop_while_view::begin caches its result.
462 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
463 filter_view::begin caches its result.
464 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
465 reverse_view::begin caches its result.
467 2020-02-28 Jonathan Wakely <jwakely@redhat.com>
469 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
470 filesystems that silently truncate timestamps.
471 * testsuite/experimental/filesystem/operations/last_write_time.cc:
474 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable
475 -Wstringop-overflow warnings.
477 2020-02-27 Jonathan Wakely <jwakely@redhat.com>
479 * testsuite/lib/libstdc++.exp (v3_target_compile): Add
480 -fdiagnostics-urls=never to options.
482 2020-02-27 Patrick Palka <ppalka@redhat.com>
484 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend
486 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
487 (take_view::_Sentinel<_Const>): Likewise.
488 (take_while_view::_Sentinel<_Const>): Likewise.
489 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
490 * testsuite/std/ranges/adaptors/split.cc: Augment test.
491 * testsuite/std/ranges/adaptors/take.cc: Augment test.
492 * testsuite/std/ranges/adaptors/take_while.cc: Augment test.
493 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
495 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
496 base() of a vector<>::iterator is a pointer.
497 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
498 * testsuite/25_algorithms/move/constrained.cc: Likewise.
499 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
500 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
502 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
503 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
504 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
505 * testsuite/25_algorithms/sort/constrained.cc: Likewise.
506 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
508 2020-02-27 Jonathan Wakely <jwakely@redhat.com>
510 * include/debug/array (operator<=>): Define for C++20.
511 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
512 Adjust dg-error line numbers.
513 * testsuite/23_containers/array/tuple_interface/
514 tuple_element_debug_neg.cc: Likewise.
516 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
517 defining _GLIBCXX_ASSERTIONS.
518 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
519 * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
520 * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
521 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
522 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
523 * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
524 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
525 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
526 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
527 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
528 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
529 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
531 * include/debug/string (__gnu_debug::basic_string::insert): Fix for
532 C++98 where the member function of the base class returns void.
534 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
535 equality comparisons that support value-initialized iterators.
537 * include/bits/boost_concept_check.h (__function_requires): Add
538 _GLIBCXX14_CONSTEXPR.
539 * testsuite/25_algorithms/min/concept_checks.cc: New test.
541 2020-02-26 Patrick Palka <ppalka@redhat.com>
544 * include/std/ranges (split_view::_InnerIter::operator==): Compare
545 the operands' _M_i rather than their _M_i.current().
546 * testsuite/std/ranges/adaptors/split.cc: Augment test.
548 P1645R1 constexpr for <numeric> algorithms
549 * include/bits/stl_numeric.h (iota, accumulate, inner_product,
550 partial_sum, adjacent_difference): Make conditionally constexpr for
552 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
554 (reduce, transform_reduce, exclusive_scan, inclusive_scan,
555 transform_exclusive_scan, transform_inclusive_scan): Make conditionally
557 * include/std/version (__cpp_lib_constexpr_numeric): Define.
558 * testsuite/26_numerics/accumulate/constexpr.cc: New test.
559 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
560 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
561 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
562 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
563 * testsuite/26_numerics/iota/constexpr.cc: Likewise.
564 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
565 * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
566 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
567 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
568 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
570 2020-02-26 Jonathan Wakely <jwakely@redhat.com>
572 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
573 variables in smaller scope and avoid calling ranges::distance when we
574 know they are pointers. Remove statically-unreachable use of
575 __builtin_unreachable().
576 * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
579 * include/std/ranges (__detail::__maybe_empty_t): Define new helper
581 (__detail::__maybe_const_t): Likewise.
582 (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
583 (transform_view, take_view, take_while_view, elements_view): Use
585 (join_view, split_view): Use both.
587 2020-02-25 Patrick Palka <ppalka@redhat.com>
589 LWG 3397 basic_istream_view::iterator should not provide
591 * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
593 (basic_istream_view:_Iterator::iterator_concept): ... this.
594 * testsuite/std/ranges/istream_view.cc: Augment test.
596 LWG 3325 Constrain return type of transformation function for
598 * include/std/ranges (transform_view): Constrain the return type of the
599 transformation function as per LWG 3325.
600 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
602 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
603 * include/std/ranges (join_view::_Iterator::operator--): Require that
604 range_reference_t<_Base> models common_range.
605 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
607 LWG 3301 transform_view::_Iterator has incorrect iterator_category
608 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
609 determination of iterator_category as per LWG 3301.
610 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
612 LWG 3292 iota_view is under-constrained
613 * include/std/ranges (iota_view): Require that _Winc models semiregular
615 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
617 2020-02-25 Jonathan Wakely <jwakely@redhat.com>
619 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
620 during constant evaluation. Call __builtin_memmove directly instead of
622 (__copy_or_move_backward): Likewise.
623 * include/bits/stl_algobase.h (__memmove): Remove.
624 (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
625 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
626 Use __builtin_memmove directly instead of __memmove.
627 (__copy_move_a2): Do not use memmove during constant evaluation.
628 (__copy_move_backward_a2): Use _IsMove constant to select correct
629 __copy_move_backward specialization.
630 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
631 begin turned into moves during constant evaluation.
633 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
637 * include/bits/stl_algobase.h (__memmove): Cast away const before
638 doing move assignment.
639 * testsuite/25_algorithms/move/93872.cc: New test.
640 * testsuite/25_algorithms/move_backward/93872.cc: New test.
642 2020-02-24 Patrick Palka <ppalka@redhat.com>
645 * include/bits/ranges_algobase.h (__copy_or_move,
646 __copy_or_move_backward): Don't inspect the iter_value_t of the output
647 iterator, instead inspect its iterator_traits directly.
648 * include/bits/stl_iterator.h (back_insert_iterator::container):
649 Conditionally initialize.
650 (back_insert_iterator::difference_type): Conditionally define.
651 (back_insert_iterator::back_insert_iterator): Conditionally define this
653 (front_insert_iterator::container): Conditionally initialize.
654 (front_insert_iterator::difference_type): Conditionally define.
655 (front_insert_iterator::front_insert_iterator): Conditionally define
656 this default constructor.
657 * 24_iterators/back_insert_iterator/pr93884.cc: New test.
658 * 24_iterators/front_insert_iterator/pr93884.cc: New test.
660 P0769R2 Add shift to <algorithm>
661 * include/bits/ranges_algo.h (shift_left, shift_right): New.
662 * testsuite/25_algorithms/shift_left/1.cc: New test.
663 * testsuite/25_algorithms/shift_right/1.cc: New test.
665 2020-02-24 Jonathan Wakely <jwakely@redhat.com>
667 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
668 Make noexcept-specifier conditional.
669 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
672 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
674 (operator==(istream_iterator, default_sentinel_t)): Add operator.
675 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
676 * include/bits/streambuf_iterator.h
677 (istreambuf_iterator(default_sentinel_t)): Add constructor.
678 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
679 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
681 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
682 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
684 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
686 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
687 (ranges::enable_view): Simplify (LWG 3326).
688 * include/bits/range_access.h (ranges::enable_view): Declare.
689 * include/bits/regex.h (__enable_view_impl): Remove partial
691 * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
692 * include/bits/stl_set.h (__enable_view_impl): Likewise.
693 * include/bits/unordered_set.h (__enable_view_impl): Likewise.
694 * include/debug/multiset.h (__enable_view_impl): Likewise.
695 * include/debug/set.h (__enable_view_impl): Likewise.
696 * include/debug/unordered_set (__enable_view_impl): Likewise.
697 * include/experimental/string_view (ranges::enable_view): Define
698 partial specialization.
699 * include/std/span (ranges::enable_view): Likewise.
700 * include/std/string_view (ranges::enable_view): Likewise.
701 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
703 2020-02-21 Jonathan Wakely <jwakely@redhat.com>
705 * include/std/optional (operator<=>(optional<T>, optional<U>))
706 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
708 * include/std/tuple (__tuple_cmp): New helper function for <=>.
709 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
710 * include/std/variant (operator<=>(variant<T...>, variant<T...>))
711 (operator<=>(monostate, monostate)): Define for C++20.
712 * testsuite/20_util/optional/relops/three_way.cc: New test.
713 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
714 * testsuite/20_util/variant/89851.cc: Move to ...
715 * testsuite/20_util/variant/relops/89851.cc: ... here.
716 * testsuite/20_util/variant/90008.cc: Move to ...
717 * testsuite/20_util/variant/relops/90008.cc: ... here.
718 * testsuite/20_util/variant/relops/three_way.cc: New test.
720 2020-02-20 Patrick Palka <ppalka@redhat.com>
722 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
724 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use
725 __maybe_refwrap to capture lvalue references by reference, and then use
726 unwrap_reference_t to forward the by-reference captures as references.
727 * testsuite/std/ranges/adaptors/split.cc: Augment test.
728 * testsuite/std/ranges/adaptors/split_neg.cc: New test.
730 * include/std/ranges (iota_view): Forward declare _Sentinel.
731 (iota_view::_Iterator): Befriend _Sentinel.
732 (iota_view::_Sentinel::_M_equal): New member function.
733 (iota_view::_Sentinel::operator==): Use it.
734 (views::_Iota::operator()): Forward __f using the correct type.
735 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
736 with integers of different signedness, to appease iota_view's deduction
738 * testsuite/std/ranges/iota/iota_view.cc: Augment test.
740 2020-02-20 Jonathan Wakely <jwakely@redhat.com>
742 * include/bits/range_access.h (ranges::begin): Reject array of
744 (ranges::end, ranges::size): Require arrays to be bounded.
745 (ranges::data): Require lvalue or borrowed_range.
746 (ranges::iterator_t): Remove constraint.
747 * testsuite/std/ranges/access/begin.cc: Do not check array of
749 * testsuite/std/ranges/access/begin_neg.cc: New test.
750 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
751 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
752 * testsuite/std/ranges/access/ssize.cc: Do not check array of
755 * include/std/system_error (error_category::operator<=>)
756 (operator<=>(const error_code&, const error_code&))
757 (operator<=>(const error_condition&, const error_condition&)): Define
759 * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
760 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
762 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
764 * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
765 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
767 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
768 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
770 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
771 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
772 Remove incorrect comment.
773 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
776 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
778 * include/std/thread (thread::id::operator<=>): Define for C++20.
779 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
780 functions in namespace std.
781 * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
783 2020-02-19 Patrick Palka <ppalka@redhat.com>
785 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
786 null terminator of the underlying string as part of the test_range.
789 2020-02-19 Jonathan Wakely <jwakely@redhat.com>
791 * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
792 requirement (LWG 3385).
793 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
794 expected declaration.
796 * include/std/ranges (take_while_view, drop_view, drop_while_view)
797 (elements_view:_Iterator): Initialize data members (LWG 3364).
799 * libsupc++/compare (three_way_comparable): Remove always-false check
800 that should have been removed with weak_equality (P1959R0).
801 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
803 * include/std/concepts (__detail::__partially_ordered_with): Move here
805 (totally_ordered, totally_ordered_with): Use __partially_ordered_with
806 to simplify definition (LWG 3331).
807 * libsupc++/compare (__detail::__partially_ordered_with): Move to
810 * include/std/concepts (totally_ordered_with): Remove redundant
811 requirement (LWG 3329).
813 * include/std/ranges (__detail::__convertible_to_non_slicing): New
815 (__detail::__pair_like_convertible_to): Remove.
816 (__detail::__pair_like_convertible_from): Add requirements for
817 non-slicing conversions.
818 (subrange): Constrain constructors with __convertible_to_non_slicing.
819 Remove constructors from pair-like types. Add new deduction guide.
820 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
822 * include/bits/iterator_concepts.h (iter_move): Add declaration to
823 prevent unqualified lookup finding a suitable declaration (LWG 3247).
825 * include/std/memory_resource (polymorphic_allocator::allocate)
826 (polymorphic_allocator::allocate_object): Change type of exception to
827 bad_array_new_length (LWG 3237).
828 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
830 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
831 * include/std/version (__cpp_lib_unwrap_ref): Likewise.
832 * testsuite/20_util/unwrap_reference/1.cc: Check macro.
833 * testsuite/20_util/unwrap_reference/3.cc: New test.
835 * include/std/numeric (midpoint(T8, T*)): Do not check for complete
836 type during overload resolution, use static assert instead (LWG 3200).
837 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
839 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
841 * include/std/span (span(T (&)[N])): Use non-deduced context to
842 prevent first parameter from interfering with class template argument
843 deduction (LWG 3369).
844 * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
845 * testsuite/23_containers/span/lwg3255.cc: Check for construction from
848 * include/std/span (span::const_iterator, span::const_reverse_iterator)
849 (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
851 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
853 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
855 * testsuite/20_util/specialized_algorithms/uninitialized_copy/
856 constrained.cc: Likewise.
857 * testsuite/20_util/specialized_algorithms/
858 uninitialized_default_construct/constrained.cc: Likewise.
859 * testsuite/20_util/specialized_algorithms/uninitialized_fill/
860 constrained.cc: Likewise.
861 * testsuite/20_util/specialized_algorithms/uninitialized_move/
862 constrained.cc: Likewise.
863 * testsuite/20_util/specialized_algorithms/
864 uninitialized_value_construct/constrained.cc: Likewise.
866 * include/bits/range_access.h (range_size_t): Define alias template.
867 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
868 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
870 * include/std/ranges (filter_view, transform_view, take_view)
871 (join_view, split_view, reverse_view): Remove commented-out converting
872 constructors (LWG 3280).
874 * include/std/memory (uninitialized_construct_using_allocator): Use
875 std::construct_at (LWG 3321).
877 * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
878 (polymorphic_allocator::allocate_object)
879 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
881 LWG 3379. "safe" in several library names is misleading
882 * include/bits/range_access.h (enable_safe_range): Rename to
883 enable_borrowed_range.
884 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
885 (safe_range): Rename to borrowed_range.
886 * include/bits/ranges_algo.h: Adjust to use new names.
887 * include/bits/ranges_algobase.h: Likewise.
888 * include/bits/ranges_uninitialized.h: Likewise.
889 * include/std/ranges: Likewise.
890 (safe_iterator_t): Rename to borrowed_iterator_t.
891 (safe_subrange_t): Rename to borrowed_subrange_t.
892 * include/std/span: Adjust to use new names.
893 * include/std/string_view: Likewise.
894 * include/experimental/string_view: Likewise.
895 * testsuite/std/ranges/access/begin.cc: Likewise.
896 * testsuite/std/ranges/access/cbegin.cc: Likewise.
897 * testsuite/std/ranges/access/cdata.cc: Likewise.
898 * testsuite/std/ranges/access/cend.cc: Likewise.
899 * testsuite/std/ranges/access/crbegin.cc: Likewise.
900 * testsuite/std/ranges/access/crend.cc: Likewise.
901 * testsuite/std/ranges/access/data.cc: Likewise.
902 * testsuite/std/ranges/access/end.cc: Likewise.
903 * testsuite/std/ranges/access/rbegin.cc: Likewise.
904 * testsuite/std/ranges/access/rend.cc: Likewise.
905 * testsuite/std/ranges/safe_range.cc: Likewise.
906 * testsuite/std/ranges/safe_range_types.cc: Likewise.
907 * testsuite/util/testsuite_iterators.h: Likewise.
909 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
910 (tuple_element<1, const subrange<I, S, K>>): Add partial
911 specializations (LWG 3398).
912 * testsuite/std/ranges/subrange/tuple_like.cc: New test.
914 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
915 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
916 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
918 2020-02-18 Patrick Palka <ppalka@redhat.com>
920 P1983R0 Wording for GB301, US296, US292, US291, and US283
921 * include/std/ranges (filter_view::pred): New member function.
922 (join_view::_Iterator::_Iterator): Remove now-redundant comment since
923 P1983R0 fixes the highlighted issue in the same way.
924 (join_view::_Iterator<_Const>): Add friend
925 join_view::_Iterator<!_Const>.
926 (join_view::_M_inner): Remove mutable specifier, effectively reverting
927 the proposed wording changes of P3278.
928 (join_view::begin): Refine the condition for when to return a const
930 (split_view::_OuterIter::_OuterIter): Adjust constraints.
931 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
934 2020-02-18 Jonathan Wakely <jwakely@redhat.com>
937 * include/std/ranges (_RangeAdaptor): Add deduction guide.
938 (filter_view::_Iterator): Add alias _Vp_iter and use in place of
940 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
941 (transform_view::_Iterator): Add alias _Base_iter and use in place of
943 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
944 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
945 (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
946 (split_view::_InnerIter::_S_iter_cat()): Likewise.
948 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
949 assumption that long is wider than int.
950 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
951 * testsuite/20_util/integer_comparisons/less.cc: Likewise.
952 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
953 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
955 P1976R2 Fixed-size span construction from dynamic range
956 * include/std/span (__cpp_lib_span): Update value.
957 (span(It, size_type), span(It, End)): Make conditionally explicit. Add
959 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
961 (span::first<Count>(), span::last<Count>()): Use explicit type in
963 (as_bytes, as_writable_bytes): Likewise.
964 * include/std/version (__cpp_lib_span): Update value.
965 * testsuite/23_containers/span/1.cc: Check new value.
966 * testsuite/23_containers/span/2.cc: Check new value.
967 * testsuite/23_containers/span/explicit.cc: New test.
969 * include/std/span (span::__is_compatible_array): Simplify alias
970 template by using requires-clause.
971 (span::__is_compatible_ref): New alias template for constraining
973 (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
974 (span(It, size_type), span(It, End)): Use __is_compatible_ref.
975 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
976 redundant parentheses.
977 (span(R&&)): Add missing constraints.
979 * include/std/span (span): Reorder members and rename template
980 parameters to match declarations in the C++2a working paper.
982 P2116R0 Remove tuple-like protocol support from fixed-extent span
983 * include/std/span (get, tuple_size, tuple_element): Remove.
984 * testsuite/23_containers/span/everything.cc: Remove checks for
986 * testsuite/23_containers/span/get_neg.cc: Remove.
987 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
988 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
989 * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
991 2020-02-17 Patrick Palka <ppalka@redhat.com>
993 P2106R0 Alternative wording for GB315 and GB316
994 * include/bits/ranges_algo.h (in_fun_result): New.
995 (for_each_result, for_each_n_result): Change into an alias of
998 (mismatch_result): Change into an alias of in_in_result.
999 (copy_if_result): Change into an alias of in_out_result.
1000 (swap_ranges_result): Change into an alias of in_in_result.
1001 (unary_transform_result): Change into an alias of in_out_result.
1002 (in_in_out_result): New.
1003 (binary_transform_result): Change into an alias of in_in_out_result.
1004 (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
1005 remove_copy_result, unique_copy_result, reverse_copy_result,
1006 rotate_copy_result, partial_sort_copy_result): Change into an alias of
1008 (in_out_out_result): New.
1009 (partition_copy_result, merge_result): Change into an alias of
1011 (set_union_result, set_intersection_result): Change into an alias of
1013 (set_difference_result): Change into an alias of in_out_result.
1014 (set_symmetric_difference): Change into an alias of in_in_out_result.
1015 (min_max_result): New.
1016 (minmax_result, minmax_element_result): Change into an alias of
1018 (in_found_result): New.
1019 (next_permutation_result, prev_permutation_result): Change into an alias
1021 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
1022 Adjust following changes to next_permutation_result and
1023 prev_permutation_result.
1024 * include/bits/ranges_algobase.h (in_out_result): New.
1025 (copy_result, move_result, move_backward_result, copy_backward_result,
1026 copy_n_result): Change into an alias of in_out_result.
1027 * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
1028 uninitialized_copy_n_result, uninitialized_move_result,
1029 uninitialized_move_n_result): Likewise.
1030 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
1031 structured bindings.
1032 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
1034 P1243R4 Rangify new algorithms
1035 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
1036 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
1037 * testsuite/25_algorithms/clamp/constrained.cc: New test.
1038 * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
1039 * testsuite/25_algorithms/sample/constrained.cc: New test.
1041 2020-02-17 Jonathan Wakely <jwakely@redhat.com>
1043 P1964R2 Wording for boolean-testable
1044 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
1045 (__adjacent_find_fn): Cast result of predicate to bool.
1046 * include/std/concepts (__boolean): Remove.
1047 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
1048 new helper concepts.
1049 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
1050 (predicate): Use __boolean_testable instead of boolean.
1051 * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
1054 P1970R2 Consistency for size() functions: Add ranges::ssize
1055 * include/bits/range_access.h (_SSize, ssize): Define for C++20.
1056 * testsuite/std/ranges/access/ssize.cc: New test.
1058 P1956R1 On the names of low-level bit manipulation functions
1059 * include/bits/hashtable_policy.h: Update comment.
1060 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
1061 (ispow2, ceil2, floor2, log2p1): Likewise.
1062 (__cpp_lib_int_pow2): Add feature test macro.
1063 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
1064 * include/std/memory (assume_aligned): Adjust use of ispow2.
1065 * include/std/version (__cpp_lib_int_pow2): Add.
1066 * libsupc++/new_opa.cc: Adjust use of __ispow2.
1067 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
1068 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
1069 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
1070 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
1071 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
1072 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
1073 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
1074 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
1075 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
1076 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
1077 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
1078 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
1080 * include/std/charconv: Add comment.
1082 PR libstdc++/92546 (partial)
1083 * include/bits/random.h (uniform_random_bit_generator): Move definition
1084 to <bits/uniform_int_dist.h>.
1085 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
1087 * include/bits/ranges_algobase.h: Do not include <cmath>.
1088 * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
1090 * include/std/ranges: Do not include <limits>.
1091 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
1093 PR libstdc++/92546 (partial)
1094 * include/Makefile.am: Add new header.
1095 * include/Makefile.in: Regenerate.
1096 * include/bits/int_limits.h: New header.
1097 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
1098 numeric_limits with __detail::__int_limits.
1099 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
1100 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
1102 * include/std/charconv (__to_chars_8, __from_chars_binary)
1103 (__from_chars_alpha_to_num, from_chars): Likewise.
1104 * include/std/memory_resource (polymorphic_allocator::allocate)
1105 (polymorphic_allocator::allocate_object): Likewise.
1106 * include/std/string_view (basic_string_view::_S_compare): Likewise.
1107 * include/std/utility (in_range): Likewise.
1108 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
1109 extra error about incomplete type __int_limits<bool>.
1110 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
1111 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
1112 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
1113 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
1114 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
1115 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
1116 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
1117 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
1118 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
1119 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
1120 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
1121 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
1123 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
1124 value for partial_ordering::unordered.
1126 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
1127 const-qualified expression variations.
1128 * include/std/concepts (copyable): Likewise.
1130 * include/std/type_traits (__is_standard_integer): New helper trait.
1131 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
1132 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
1133 * include/std/version (__cpp_lib_integer_comparison_functions): Define.
1134 * testsuite/20_util/integer_comparisons/1.cc: New test.
1135 * testsuite/20_util/integer_comparisons/2.cc: New test.
1136 * testsuite/20_util/integer_comparisons/equal.cc: New test.
1137 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
1138 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
1139 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
1140 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
1141 * testsuite/20_util/integer_comparisons/in_range.cc: New test.
1142 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
1143 * testsuite/20_util/integer_comparisons/less.cc: New test.
1144 * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
1145 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
1146 * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
1147 * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
1148 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
1150 2020-02-16 Patrick Palka <ppalka@redhat.com>
1152 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
1153 Move code after an early exit constexpr if to under an else branch.
1154 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
1156 2020-02-15 Patrick Palka <ppalka@redhat.com>
1158 * include/bits/ranges_algo.h: Adjust whitespace and formatting.
1159 * include/bits/ranges_algobase.h: Likewise.
1160 * include/bits/ranges_uninitialized.h: Likewise.
1162 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
1163 binary_search, copy_if, count, count_if, equal_range, find, find_end,
1164 find_first_of, find_if, find_if_not, for_each, generate, generate_n,
1165 includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
1166 is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
1167 lower_bound, make_heap, max, max_element, merge, min, min_element,
1168 minmax, minmax_element, mismatch, next_permutation, none_of,
1169 nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
1170 partition_point, pop_heap, prev_permutation, push_heap, remove,
1171 remove_copy, remove_copy_if, remove_if, replace, replace_copy,
1172 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
1173 search, search_n, set_difference, set_intersection,
1174 set_symmetric_difference, set_union, shuffle, sort, sort_heap,
1175 stable_partition, stable_sort, swap_ranges, transform, unique,
1176 unique_copy, upper_bound): Convert into function objects.
1177 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
1178 fill, move_backward, copy_backward): Likewise.
1179 * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
1180 uninitialized_default_construct_n, uninitialized_value_construct,
1181 uninitialized_value_construct_n, uninitialized_copy,
1182 uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
1183 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
1184 destroy, destroy_n): Likewise.
1186 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
1187 (ranges::find_end): ... here.
1188 (ranges::__lexicographical_compare): Fold into ...
1189 (ranges::lexicographical_compare): ... here.
1190 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
1191 (ranges::equal): ... here.
1193 2020-02-15 Jonathan Wakely <jwakely@redhat.com>
1195 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
1196 * include/std/deque: Likewise.
1197 * include/std/forward_list: Likewise.
1198 * include/std/list: Likewise.
1199 * include/std/string: Likewise.
1200 * include/std/vector: Likewise.
1201 * include/std/version: Likewise.
1202 * testsuite/23_containers/deque/erasure.cc: Test for new value.
1203 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
1204 * testsuite/23_containers/list/erasure.cc: Likewise.
1205 * testsuite/23_containers/map/erasure.cc: Likewise.
1206 * testsuite/23_containers/set/erasure.cc: Likewise.
1207 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
1208 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
1209 * testsuite/23_containers/vector/erasure.cc: Likewise.
1211 2020-02-15 Jonathan Wakely <jwakely@redhat.com>
1213 * include/bits/random.h (uniform_random_bit_generator): Require min()
1214 and max() to be constant expressions and min() to be less than max().
1215 * testsuite/26_numerics/random/concept.cc: Check additional cases.
1216 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
1218 2020-02-13 Patrick Palka <ppalka@redhat.com>
1220 * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
1221 * include/Makefile.in: Regenerate.
1222 * include/bits/ranges_uninitialized.h: New header.
1223 * include/std/memory: Include it.
1224 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
1226 * .../uninitialized_copy/constrained.cc: New test.
1227 * .../uninitialized_default_construct/constrained.cc: New test.
1228 * .../uninitialized_fill/constrained.cc: New test.
1229 * .../uninitialized_move/constrained.cc: New test.
1230 * .../uninitialized_value_construct/constrained.cc: New test.
1232 * include/Makefile.am: Add bits/ranges_algobase.h
1233 * include/Makefile.in: Regenerate.
1234 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
1236 (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
1237 __detail::__is_move_iterator, copy_result, move_result,
1238 __equal, equal, copy_result, move_result, move_backward_result,
1239 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
1240 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
1241 fill): Split out into ...
1242 * bits/range_algobase.h: ... this new header.
1244 2020-02-12 Patrick Palka <ppalka@redhat.com>
1246 LWG 3389 and LWG 3390
1247 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
1248 constructing the move_iterator with __i.
1249 (counted_iterator::counted_iterator): Use std::move when initializing
1251 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
1252 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
1254 2020-02-12 Sandra Loosemore <sandra@codesourcery.com>
1259 * configure: Regenerated.
1261 2020-02-12 François Dumont <fdumont@gcc.gnu.org>
1263 * include/bits/hashtable.h
1264 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
1265 missing std namespace qualification to forward call.
1267 2020-02-09 Jonathan Wakely <jwakely@redhat.com>
1269 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
1271 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
1273 * include/std/ranges: Fix non-ASCII characters in comment.
1275 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
1276 equality comparison to be valid and return bool.
1277 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
1278 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
1279 type with ambiguous conversion to fundamental types.
1280 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
1282 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
1284 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
1286 (readable_traits): Rename to indirectly_readable_traits.
1287 (readable): Rename to indirectly_readable.
1288 (writable): Rename to indirectly_writable.
1289 (__detail::__iter_exchange_move): Do not use remove_reference_t.
1290 (indirectly_swappable): Adjust requires expression parameter types.
1292 * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
1293 (ranges::replace_if, ranges::generate_n, ranges::generate)
1294 (ranges::remove): Use new name for writable.
1295 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
1296 Use new name for readable.
1297 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
1298 new name for readable_traits.
1299 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
1300 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
1301 new definition of indirectly_readable.
1303 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
1304 to take parameters of common_iterator, instead of the common_iterator
1305 type itself. Fix argument for __common_iter_has_arrow constraint.
1306 (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
1308 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
1310 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
1312 (basic_istream_view::_Iterator::operator++()): Add missing return.
1314 2020-02-07 Patrick Palka <ppalka@redhat.com>
1316 * include/bits/ranges_algo.h: Remove extraneous &&.
1318 * include/std/ranges (ranges::__detail::__stream_extractable,
1319 ranges::basic_istream_view, ranges::istream_view): Define.
1320 * testsuite/std/ranges/istream_view: New test.
1322 Implement C++20 range adaptors
1323 * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
1324 (subrange::_S_store_size): Mark as const instead of constexpr to
1325 avoid what seems to be a bug in GCC.
1326 (__detail::__box): Give it defaulted copy and move constructors.
1327 (ranges::views::_Single::operator()): Mark constexpr.
1328 (ranges::views::_Iota::operator()): Mark constexpr.
1329 (__detail::Empty): Define.
1330 (ranges::views::__closure::_RangeAdaptor,
1331 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
1332 ranges::views::all, ranges::__detail::find_if,
1333 ranges::__detail::find_if_not, ranges::__detail::mismatch,
1334 ranges::detail::min, filter_view, ranges::views::filter, transform_view,
1335 ranges::views::transform, take_view, ranges::views::take,
1336 take_while_view, ranges::views::take_while, drop_view,
1337 ranges::views::drop, join_view, ranges::views::join,
1338 __detail::require_constant, __detail::tiny_range, split_view,
1339 ranges::views::split, ranges::views::_Counted, ranges::views::counted,
1340 common_view, ranges::views::common, reverse_view,
1341 ranges::views::reverse,
1342 ranges::views::__detail::__is_reversible_subrange,
1343 ranges::views::__detail::__is_reverse_view, reverse_view,
1344 ranges::views::reverse, __detail::__has_tuple_element, elements_view,
1345 ranges::views::elements, ranges::views::keys, ranges::views::values):
1347 (views): Alias for ranges::views.
1348 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
1349 tuple_element<1, ranges::subrange>): New partial specializations.
1350 * testsuite/std/ranges/adaptors/all.cc: New test.
1351 * testsuite/std/ranges/adaptors/common.cc: Likewise.
1352 * testsuite/std/ranges/adaptors/counted.cc: Likewise.
1353 * testsuite/std/ranges/adaptors/drop.cc: Likewise.
1354 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
1355 * testsuite/std/ranges/adaptors/elements.cc: Likewise.
1356 * testsuite/std/ranges/adaptors/filter.cc: Likewise.
1357 * testsuite/std/ranges/adaptors/join.cc: Likewise.
1358 * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
1359 * testsuite/std/ranges/adaptors/split.cc: Likewise.
1360 * testsuite/std/ranges/adaptors/take.cc: Likewise.
1361 * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
1362 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
1364 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
1366 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
1367 type of enumerations and comparison category types.
1368 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
1369 (__cmp_cat::_Ncmp::unordered): Change value to 2.
1370 (partial_ordering::_M_value, weak_ordering::_M_value)
1371 (strong_ordering::_M_value): Change type to __cmp_cat::type.
1372 (partial_ordering::_M_is_ordered): Remove data member.
1373 (partial_ordering): Use second bit of _M_value for unordered. Adjust
1374 comparison operators.
1375 (weak_ordering::operator partial_ordering): Simplify to remove
1377 (operator<=>(unspecified, weak_ordering)): Likewise.
1378 (strong_ordering::operator partial_ordering): Likewise.
1379 (strong_ordering::operator weak_ordering): Likewise.
1380 (operator<=>(unspecified, strong_ordering)): Likewise.
1381 * testsuite/18_support/comparisons/categories/partialord.cc: New test.
1382 * testsuite/18_support/comparisons/categories/strongord.cc: New test.
1383 * testsuite/18_support/comparisons/categories/weakord.cc: New test.
1385 * include/std/ranges (iota_view::_Iterator): Fix typo in name of
1386 __cpp_lib_three_way_comparison macro and use deduced return type for
1388 * testsuite/std/ranges/iota/iterator.cc: New test.
1390 2020-02-07 Patrick Palka <ppalka@redhat.com>
1391 Jonathan Wakely <jwakely@redhat.com>
1393 Implement C++20 constrained algorithms
1394 * include/Makefile.am: Add new header.
1395 * include/Makefile.in: Regenerate.
1396 * include/std/algorithm: Include <bits/ranges_algo.h>.
1397 * include/bits/ranges_algo.h: New file.
1398 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
1399 * testsuite/25_algorithms/all_of/constrained.cc: New test.
1400 * testsuite/25_algorithms/any_of/constrained.cc: New test.
1401 * testsuite/25_algorithms/binary_search/constrained.cc: New test.
1402 * testsuite/25_algorithms/copy/constrained.cc: New test.
1403 * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
1404 * testsuite/25_algorithms/copy_if/constrained.cc: New test.
1405 * testsuite/25_algorithms/copy_n/constrained.cc: New test.
1406 * testsuite/25_algorithms/count/constrained.cc: New test.
1407 * testsuite/25_algorithms/count_if/constrained.cc: New test.
1408 * testsuite/25_algorithms/equal/constrained.cc: New test.
1409 * testsuite/25_algorithms/equal_range/constrained.cc: New test.
1410 * testsuite/25_algorithms/fill/constrained.cc: New test.
1411 * testsuite/25_algorithms/fill_n/constrained.cc: New test.
1412 * testsuite/25_algorithms/find/constrained.cc: New test.
1413 * testsuite/25_algorithms/find_end/constrained.cc: New test.
1414 * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
1415 * testsuite/25_algorithms/find_if/constrained.cc: New test.
1416 * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
1417 * testsuite/25_algorithms/for_each/constrained.cc: New test.
1418 * testsuite/25_algorithms/generate/constrained.cc: New test.
1419 * testsuite/25_algorithms/generate_n/constrained.cc: New test.
1420 * testsuite/25_algorithms/heap/constrained.cc: New test.
1421 * testsuite/25_algorithms/includes/constrained.cc: New test.
1422 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
1423 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
1424 * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
1425 * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
1426 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
1427 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
1429 * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
1430 * testsuite/25_algorithms/max/constrained.cc: New test.
1431 * testsuite/25_algorithms/max_element/constrained.cc: New test.
1432 * testsuite/25_algorithms/merge/constrained.cc: New test.
1433 * testsuite/25_algorithms/min/constrained.cc: New test.
1434 * testsuite/25_algorithms/min_element/constrained.cc: New test.
1435 * testsuite/25_algorithms/minmax/constrained.cc: New test.
1436 * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
1437 * testsuite/25_algorithms/mismatch/constrained.cc: New test.
1438 * testsuite/25_algorithms/move/constrained.cc: New test.
1439 * testsuite/25_algorithms/move_backward/constrained.cc: New test.
1440 * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
1441 * testsuite/25_algorithms/none_of/constrained.cc: New test.
1442 * testsuite/25_algorithms/nth_element/constrained.cc: New test.
1443 * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
1444 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
1445 * testsuite/25_algorithms/partition/constrained.cc: New test.
1446 * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
1447 * testsuite/25_algorithms/partition_point/constrained.cc: New test.
1448 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
1449 * testsuite/25_algorithms/remove/constrained.cc: New test.
1450 * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
1451 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
1452 * testsuite/25_algorithms/remove_if/constrained.cc: New test.
1453 * testsuite/25_algorithms/replace/constrained.cc: New test.
1454 * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
1455 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
1456 * testsuite/25_algorithms/replace_if/constrained.cc: New test.
1457 * testsuite/25_algorithms/reverse/constrained.cc: New test.
1458 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
1459 * testsuite/25_algorithms/rotate/constrained.cc: New test.
1460 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
1461 * testsuite/25_algorithms/search/constrained.cc: New test.
1462 * testsuite/25_algorithms/search_n/constrained.cc: New test.
1463 * testsuite/25_algorithms/set_difference/constrained.cc: New test.
1464 * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
1465 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
1467 * testsuite/25_algorithms/set_union/constrained.cc: New test.
1468 * testsuite/25_algorithms/shuffle/constrained.cc: New test.
1469 * testsuite/25_algorithms/sort/constrained.cc: New test.
1470 * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
1471 * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
1472 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
1473 * testsuite/25_algorithms/transform/constrained.cc: New test.
1474 * testsuite/25_algorithms/unique/constrained.cc: New test.
1475 * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
1476 * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
1478 2020-02-06 Jonathan Wakely <jwakely@redhat.com>
1480 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
1481 number in comment. Fix indentation.
1483 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
1484 redundant _GLIBCXX20_CONSTEXPR.
1486 * include/std/ranges (viewable_range): Replace decay_t with
1487 remove_cvref_t (LWG 3375).
1489 2020-02-05 Jonathan Wakely <jwakely@redhat.com>
1491 * include/bits/iterator_concepts.h (iter_reference_t)
1492 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
1493 Remove workarounds for PR c++/67704.
1494 * testsuite/24_iterators/aliases.cc: New test.
1496 2020-02-05 Patrick Palka <ppalka@redhat.com>
1498 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
1499 when initializing _M_current.
1500 (move_iterator::base): Split into two overloads differing in
1501 ref-qualifiers as in P1207R4 for C++20.
1503 2020-02-04 Jonathan Wakely <jwakely@redhat.com>
1505 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
1509 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
1510 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
1511 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
1513 2020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
1515 * configure: Regenerate.
1517 2020-01-31 Patrick Palka <ppalka@redhat.com>
1519 * testsuite/24_iterators/range_operations/distance.cc: Do not assume
1520 test_range::end() returns the same type as test_range::begin().
1521 * testsuite/24_iterators/range_operations/next.cc: Likewise.
1522 * testsuite/24_iterators/range_operations/prev.cc: Likewise.
1523 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
1524 Always return a sentinel<I>.
1526 2020-01-29 Jonathan Wakely <jwakely@redhat.com>
1529 * include/std/stop_token (stop_token::stop_possible()): Call new
1530 _M_stop_possible() function.
1531 (stop_token::stop_requested()): Do not use stop_possible().
1532 (stop_token::binary_semaphore): New class, as temporary stand-in for
1533 std::binary_semaphore.
1534 (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
1535 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
1536 New data members for symchronization with stop_callback destruction.
1537 (stop_token::_Stop_cb::_Stop_cb): Make non-template.
1538 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
1540 (stop_token::_Stop_cb::_M_run): New member function.
1541 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
1543 (stop_token::_Stop_state::_M_owners): New data member to track
1544 reference count for ownership.
1545 (stop_token::_Stop_state::_M_value): New data member combining a
1546 spinlock, the stop requested flag, and the reference count for
1547 associated stop_source objects.
1548 (stop_token::_Stop_state::_M_requester): New data member for
1549 synchronization with stop_callback destruction.
1550 (stop_token::_Stop_state::_M_stop_possible()): New member function.
1551 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
1553 (stop_token::_Stop_state::_M_add_owner)
1554 (stop_token::_Stop_state::_M_release_ownership)
1555 (stop_token::_Stop_state::_M_add_ssrc)
1556 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
1557 updating reference counts.
1558 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
1559 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
1560 (stop_token::_Stop_state::_M_try_lock)
1561 (stop_token::_Stop_state::_M_try_lock_and_stop)
1562 (stop_token::_Stop_state::_M_do_try_lock): New member functions for
1564 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
1565 read and update state. Release lock while running callbacks. Use new
1566 data members to synchronize with callback destruction.
1567 (stop_token::_Stop_state::_M_remove_callback): Likewise.
1568 (stop_token::_Stop_state::_M_register_callback): Use atomic operations
1569 to read and update state.
1570 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
1571 replacing shared_ptr.
1572 (stop_source::stop_source(const stop_source&)): Update reference count.
1573 (stop_source::operator=(const stop_source&)): Likewise.
1574 (stop_source::~stop_source()): Likewise.
1575 (stop_source::stop_source(stop_source&&)): Define as defaulted.
1576 (stop_source::operator=(stop_source&&)): Establish postcondition on
1578 (stop_callback): Enforce preconditions on template parameter. Replace
1579 base class with data member of new _Cb_impl type.
1580 (stop_callback::stop_callback(const stop_token&, Cb&&))
1581 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
1582 (stop_callback::_Cb_impl): New type wrapping _Callback member and
1583 defining the _S_execute member function.
1584 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
1586 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
1587 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
1588 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
1590 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
1592 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
1593 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
1594 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
1597 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
1598 three_way_comparable_with.
1599 (__detail::__3way_cmp_with): Remove workaround for fixed bug.
1600 (compare_three_way::operator()): Remove redundant constraint from
1602 (__detail::_Synth3way::operator()): Use three_way_comparable_with
1603 instead of workaround.
1604 * testsuite/18_support/comparisons/object/93479.cc: Prune extra
1605 output due to simplified constraints on compare_three_way::operator().
1608 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
1609 * testsuite/18_support/comparisons/object/93479.cc: New test.
1611 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
1612 returns the same type as test_range::begin(). Add comments.
1613 * testsuite/std/ranges/access/rbegin.cc: Likewise.
1614 * testsuite/std/ranges/access/rend.cc: Likewise.
1615 * testsuite/std/ranges/range.cc: Do not assume the sentinel for
1616 test_range is the same as its iterator type.
1617 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
1618 operator- overloads to satisfy sized_sentinel_for when the iterator
1619 satisfies random_access_iterator.
1621 2020-01-28 Jonathan Wakely <jwakely@redhat.com>
1624 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
1625 static assertion to object types.
1628 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
1629 clock_gettime instead of explicit glibc version check.
1630 * configure: Regenerate.
1632 2020-01-28 Martin Liska <mliska@suse.cz>
1635 * include/std/atomic: Fix typo.
1636 * include/std/optional: Likewise.
1638 2020-01-27 Andrew Burgess <andrew.burgess@embecosm.com>
1640 * configure: Regenerate.
1642 2020-01-27 Jonathan Wakely <jwakely@redhat.com>
1645 * include/std/span (span): Fix deduction guide.
1646 * testsuite/23_containers/span/deduction.cc: New test.
1648 2020-01-24 Jonathan Wakely <jwakely@redhat.com>
1650 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
1651 (__cmp_cat::_Ord::equivalent): Add enumerator.
1652 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
1654 (partial_ordering, weak_ordering, strong_ordering): Remove
1655 constructors taking __cmp_cat::_Eq parameters. Use renamed
1658 2020-01-24 Maciej W. Rozycki <macro@wdc.com>
1660 * acinclude.m4: Handle `--with-toolexeclibdir='.
1661 * Makefile.in: Regenerate.
1662 * aclocal.m4: Regenerate.
1663 * configure: Regenerate.
1664 * doc/Makefile.in: Regenerate.
1665 * include/Makefile.in: Regenerate.
1666 * libsupc++/Makefile.in: Regenerate.
1667 * po/Makefile.in: Regenerate.
1668 * python/Makefile.in: Regenerate.
1669 * src/Makefile.in: Regenerate.
1670 * src/c++11/Makefile.in: Regenerate.
1671 * src/c++17/Makefile.in: Regenerate.
1672 * src/c++98/Makefile.in: Regenerate.
1673 * src/filesystem/Makefile.in: Regenerate.
1674 * testsuite/Makefile.in: Regenerate.
1676 2020-01-23 Alexandre Oliva <oliva@adacore.com>
1678 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
1679 * configure: Rebuild.
1681 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
1683 2020-01-23 Jonathan Wakely <jwakely@redhat.com>
1686 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
1688 * include/Makefile.in: Regenerate.
1690 2020-01-20 Jonathan Wakely <jwakely@redhat.com>
1692 * doc/xml/faq.xml: Fix grammar.
1693 * doc/xml/manual/appendix_contributing.xml: Improve instructions.
1694 * doc/xml/manual/spine.xml: Update copyright years.
1695 * doc/html/*: Regenerate.
1697 2020-01-19 Eric S. Raymond <esr@thyrsus.com>
1699 * doc/xml/faq.xml: Update for SVN -> Git transition.
1700 * doc/xml/manual/appendix_contributing.xml: Likewise.
1701 * doc/xml/manual/status_cxx1998.xml: Likewise.
1702 * doc/xml/manual/status_cxx2011.xml: Likewise.
1703 * doc/xml/manual/status_cxx2014.xml: Likewise.
1704 * doc/xml/manual/status_cxx2017.xml: Likewise.
1705 * doc/xml/manual/status_cxx2020.xml: Likewise.
1706 * doc/xml/manual/status_cxxtr1.xml: Likewise.
1707 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
1709 2020-01-18 Iain Sandoe <iain@sandoe.co.uk>
1711 * include/Makefile.am: Add coroutine to the std set.
1712 * include/Makefile.in: Regenerated.
1713 * include/std/coroutine: New file.
1715 2020-01-17 Jonathan Wakely <jwakely@redhat.com>
1718 * include/bits/c++config: Only do PSTL config when the header is
1719 present, to fix freestanding.
1720 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
1721 functions if they were detected by configure.
1723 2020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de>
1724 Matthew Bauer <mjbauer95@gmail.com>
1725 Jonathan Wakely <jwakely@redhat.com>
1727 PR bootstrap/64271 (partial)
1728 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
1730 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
1731 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
1732 definitions with NetBSD upstream.
1733 (ctype_base::blank): Use _CTYPE_BL.
1734 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
1736 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
1737 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
1738 parameters to unsigned char.
1739 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
1741 2020-01-16 François Dumont <fdumont@gcc.gnu.org>
1744 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
1745 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
1746 (_Equality_base): Remove.
1747 (_Equality<>::_M_equal): Review implementation. Use
1748 std::is_permutation.
1749 * testsuite/23_containers/unordered_multiset/operators/1.cc
1750 (Hash, Equal, test02, test03): New.
1751 * testsuite/23_containers/unordered_set/operators/1.cc
1752 (Hash, Equal, test02, test03): New.
1754 2020-01-15 Jonathan Wakely <jwakely@redhat.com>
1757 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
1758 Move here from <bits/range_access.h> and define using __int128 when
1760 (__is_integer_like, __is_signed_integer_like): Move here from
1761 <bits/range_access.h>.
1762 (weakly_incrementable): Use __is_signed_integer_like.
1763 * include/bits/range_access.h (__max_diff_type, __max_size_type)
1764 (__is_integer_like, __is_signed_integer_like): Move to
1765 <bits/iterator_concepts.h>.
1766 (__make_unsigned_like_t): Move here from <ranges>.
1767 * include/std/ranges (__make_unsigned_like_t): Move to
1768 <bits/range_access.h>.
1769 (iota_view): Replace using-directive with using-declarations.
1770 * testsuite/std/ranges/iota/93267.cc: New test.
1771 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
1773 2020-01-13 Jonathan Wakely <jwakely@redhat.com>
1776 * include/bits/fs_path.h (path::generic_string<C,A>)
1777 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
1778 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
1779 root-dir is converted to forward slash in generic pathname.
1780 * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
1781 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
1784 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
1786 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
1787 (__atomic_float): Add default member initializer for C++20.
1788 * include/std/atomic (atomic): Likewise.
1789 (atomic::atomic()): Remove noexcept-specifier on default constructor.
1790 * include/std/version (__cpp_lib_atomic_value_initialization): Define.
1791 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
1793 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
1794 * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
1795 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
1796 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
1797 expected result for is_trivially_default_constructible.
1798 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
1799 * testsuite/29_atomics/atomic_float/value_init.cc: New test.
1800 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
1801 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
1802 * testsuite/29_atomics/atomic_integral/cons/value_init.cc
1803 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
1804 expected results for is_trivially_default_constructible.
1805 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
1808 2020-01-10 Jonathan Wakely <jwakely@redhat.com>
1810 * testsuite/util/testsuite_iterators.h: Improve comment.
1812 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
1813 initialization syntax.
1816 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
1817 of base class independent of __cplusplus value.
1818 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
1819 type defined in the base class
1820 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
1821 * testsuite/24_iterators/istreambuf_iterator/requirements/
1822 base_classes.cc: Adjust expected base class for C++98.
1824 2020-01-09 Olivier Hainque <hainque@adacore.com>
1826 * doc/xml/manual/appendix_contributing.xml: Document _C2
1827 as a reserved identifier, by VxWorks.
1828 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
1829 * include/bits/stl_multimap.h: Likewise.
1831 2020-01-09 Jonathan Wakely <jwakely@redhat.com>
1833 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
1834 (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
1835 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
1836 partial specialization to disambiguate the two constrained
1839 * include/experimental/type_traits (experimental::is_pod_v): Disable
1840 -Wdeprecated-declarations warnings around reference to std::is_pod.
1841 * include/std/type_traits (is_pod_v): Likewise.
1842 * testsuite/18_support/max_align_t/requirements/2.cc: Also check
1843 is_standard_layout and is_trivial. Do not check is_pod for C++20.
1844 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
1845 Add -Wno-deprecated for C++20.
1846 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
1847 * testsuite/20_util/is_pod/value.cc: Likewise.
1848 * testsuite/experimental/type_traits/value.cc: Likewise.
1850 2020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
1852 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
1853 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
1854 * testuite/20_util/is_pod/deprecated-2a.cc: New test.
1856 2020-01-09 Jonathan Wakely <jwakely@redhat.com>
1859 * include/bits/random.h (operator>>): Check stream operation succeeds.
1860 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
1862 (operator>>): Remove redundant __istream_type typedefs. Check stream
1864 (__extract_params): New function to fill a vector from a stream.
1865 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
1868 * config/abi/pre/gnu.ver: Add new exports.
1869 * include/std/memory_resource (memory_resource::~memory_resource()):
1870 Do not define inline.
1871 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
1872 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
1874 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
1875 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
1877 2020-01-09 François Dumont <fdumont@gcc.gnu.org>
1880 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
1882 (_Hashtable<>::__fwd_value_for): New.
1883 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
1885 (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
1886 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
1887 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
1889 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
1890 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
1892 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
1894 * testsuite/23_containers/unordered_set/92124.cc: New.
1896 2020-01-08 Jonathan Wakely <jwakely@redhat.com>
1899 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
1900 detailed error reporting for remove_all. Check result of recursive
1901 call before incrementing iterator.
1902 (remove_all(const path&), remove_all(const path&, error_code&)): Use
1904 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
1905 result of recursive call before incrementing iterator.
1906 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
1907 are reported correctly.
1908 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
1910 2020-01-07 Thomas Rodgers <trodgers@redhat.com>
1912 * include/std/condition_variable
1913 (condition_variable_any::wait_on): Rename to match current draft
1915 (condition_variable_any::wait_on_until): Likewise.
1916 (condition_variable_any::wait_on_for): Likewise.
1917 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
1918 Adjust tests to account for renamed methods.
1920 2020-01-07 François Dumont <fdumont@gcc.gnu.org>
1923 * include/bits/stl_tree.h
1924 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
1925 std::move_if_noexcept by std::move.
1926 * testsuite/23_containers/map/92124.cc: New.
1927 * testsuite/23_containers/set/92124.cc: New.
1929 2020-01-06 Jonathan Wakely <jwakely@redhat.com>
1931 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
1932 (stop_source): Likewise (LWG 3362).
1933 * testsuite/30_threads/stop_token/stop_source.cc: Test equality
1936 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
1937 (lexicographical_compare_three_way): Do not depend on
1939 * include/std/version (__cpp_lib_three_way_comparison): Only define
1940 when __cpp_lib_concepts is defined.
1941 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
1943 2020-01-03 Jonathan Wakely <jwakely@redhat.com>
1945 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
1946 Only define four-argument overload when __cpp_lib_concepts is defined.
1948 2020-01-01 John David Anglin <danglin@gcc.gnu.org>
1950 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
1952 2020-01-01 Jakub Jelinek <jakub@redhat.com>
1954 Update copyright years.
1956 Copyright (C) 2020 Free Software Foundation, Inc.
1958 Copying and distribution of this file, with or without modification,
1959 are permitted in any medium without royalty provided the copyright
1960 notice and this notice are preserved.