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