Suggest including <stdint.h> or <cstdint> for [u]int[8|16|32|64]_t
[gcc.git] / libstdc++-v3 / ChangeLog
1 2020-05-21 Matthias Kretz <kretz@kde.org>
2
3 * testsuite/Makefile.am: Remove dup target_triplet and set tool,
4 allowing runtest to work without arguments.
5 * testsuite/Makefile.in: Regenerate.
6
7 2020-05-21 Jonathan Wakely <jwakely@redhat.com>
8
9 PR libstdc++/93983
10 * include/bits/iterator_concepts.h (__detail::__cpp17_iterator):
11 Reorder constraints to avoid recursion when constructors use
12 iterator_traits (LWG 3420).
13 * testsuite/24_iterators/customization_points/lwg3420.cc: New test.
14
15 * include/experimental/socket (basic_socket::is_open()
16 (basic_socket_acceptor::is_open()): Use _GLIBCXX_NODISCARD macro.
17
18 * include/experimental/bits/net.h (__endpoint, __protocol)
19 (__acceptable_protocol, __inet_protocol): New concepts.
20 (__detail::__is_endpoint): Move trait from <experimental/socket>.
21 (__is_protocol, __is_acceptable_protocol, __is_inet_protocol): New
22 traits.
23 (__endpoint, __protocol, __acceptable_protocol): New variable
24 templates.
25 * include/experimental/socket (__is_endpoint): Move to net.h header.
26 (basic_socket, basic_socket_acceptor): Check requirements.
27
28 * include/experimental/executor (use_future_t::use_future_t()): Fix
29 incorrect noexcept-specifier.
30 * include/experimental/internet (basic_resolver_results): Adjust
31 whitespace.
32 * include/experimental/socket (__basic_socket_impl::release): Add
33 member function.
34 (basic_socket(io_context&, const endpoint_type&)): Fix argument to
35 target constructor.
36 (basic_socket::release(), basic_socket::release(error_code&)): Add
37 missing member functions.
38 (basic_socket::is_open()): Add nodiscard attribute.
39 (basic_socket::close(error_code&)): Pass argument to base function.
40 (basic_socket_acceptor::release())
41 (basic_socket_acceptor::release(error_code&)): Add missing member
42 functions.
43 (basic_socket_acceptor::is_open()): Add nodiscard attribute.
44 (basic_socket_streambuf::error()): Add noexcept.
45 (basic_socket_iostream::error()): Likewise.
46 * testsuite/experimental/net/socket/basic_socket.cc: New test.
47
48 * include/experimental/buffer: Replace typedefs with
49 alias-declarations.
50 * include/experimental/executor: Likewise.
51 * include/experimental/internet: Likewise.
52 * include/experimental/socket: Likewise.
53 * include/experimental/timer: Likewise.
54
55 2020-05-19 Jonathan Wakely <jwakely@redhat.com>
56
57 PR libstdc++/94087
58 * src/c++11/random.cc (__x86_rdseed): Allow fallback function to be
59 passed in.
60 (__x86_rdseed_rdrand): New function that uses rdseed with rdrand
61 fallback.
62 (random_device::_M_init): Use __x86_rdseed_rdrand when both
63 instructions are available.
64 * testsuite/26_numerics/random/random_device/94087.cc: New test.
65
66 2020-05-19 Patrick Palka <ppalka@redhat.com>
67
68 PR c++/66439
69 * testsuite/20_util/pair/astuple/get_neg.cc: Prune "type/value
70 mismatch" messages.
71 * testsuite/20_util/tuple/element_access/get_neg.cc: Likewise.
72
73 2020-05-15 H.J. Lu <hongjiu.lu@intel.com>
74
75 PR bootstrap/95147
76 * configure: Regenerated.
77
78 2020-05-14 H.J. Lu <hongjiu.lu@intel.com>
79
80 * configure: Regenerated.
81
82 2020-05-13 Alexandre Oliva <oliva@adacore.com>
83
84 PR libstdc++/77691
85 * include/experimental/memory_resource
86 (__resource_adaptor_imp::do_allocate): Handle max_align_t on
87 x86-vxworks as on x86-solaris.
88 (__resource_adaptor_imp::do_deallocate): Likewise.
89 * testsuite/experimental/memory_resource/new_delete_resource.cc:
90 Drop xfail.
91 (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris.
92 (test03): Drop max-align test for char-aligned alloc.
93
94 2020-05-08 Ulrich Drepper <drepper@redhat.com>
95
96 * include/bits/atomic_base.h (atomic_flag): Implement test member
97 function.
98 * include/std/version: Define __cpp_lib_atomic_flag_test.
99 * testsuite/29_atomics/atomic_flag/test/explicit.cc: New file.
100 * testsuite/29_atomics/atomic_flag/test/implicit.cc: New file.
101
102 2020-05-07 Jonathan Wakely <jwakely@redhat.com>
103
104 PR libstdc++/94971 (partial)
105 * include/bits/ranges_algo.h (ranges::__sample_fn): Qualify
106 std::sample using macro to work in parallel mode.
107 (__sort_fn): Likewise for std::sort.
108 (ranges::__nth_element_fn): Likewise for std::nth_element.
109 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
110 Likewise for std::__min_cmp.
111 * include/parallel/algobase.h (lexicographical_compare_three_way):
112 Add to namespace std::__parallel.
113
114 PR c/92472
115 * include/parallel/multiway_merge.h (_GuardedIterator::operator*)
116 (_GuardedIterator::operator _RAIter, _UnguardedIterator::operator*)
117 (_UnguardedIterator::operator _RAIter): Add const qualifier.
118 (operator<(_GuardedIterator&, _GuardedIterator&)
119 (operator<=(_GuardedIterator&, _GuardedIterator&)
120 (operator<(_UnguardedIterator&, _UnguardedIterator&)
121 (operator<=(_UnguardedIterator&, _UnguardedIterator&): Change
122 parameters to const references.
123
124 2020-05-07 Eric Botcazou <ebotcazou@adacore.com>
125
126 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
127 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
128
129 2020-05-06 François Dumont <fdumont@gcc.gnu.org>
130
131 * include/bits/stl_algobase.h (struct _Bit_iterator): New declaration.
132 (std::__fill_a1(_Bit_iterator, _Bit_iterator, const bool&)): Likewise.
133 * include/bits/stl_bvector.h (__fill_bvector): Move outside
134 _GLIBCXX_STD_C namespace.
135 (fill(_Bit_iterator, _Bit_iterator, const bool&)): Likewise and rename
136 into...
137 (__fill_a1): ...this.
138 * testsuite/25_algorithms/fill/bvector/1.cc: New.
139
140 2020-05-06 H.J. Lu <hongjiu.lu@intel.com>
141
142 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
143
144 2020-05-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
145
146 * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
147 * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
148 Likewise.
149 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
150 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
151 Likewise.
152
153 2020-05-06 Martin Liska <mliska@suse.cz>
154
155 Revert:
156 2020-05-05 Martin Liska <mliska@suse.cz>
157 PR c/92472
158 * include/parallel/multiway_merge.h:
159 Use const for _Compare template argument.
160
161 2020-05-06 Jonathan Wakely <jwakely@redhat.com>
162
163 * doc/xml/manual/abi.xml (abi.versioning.history): Document library
164 versions for GCC 9.[123] and 10.1 releases.
165 * doc/html/*: Regenerate.
166
167 2020-05-06 Jakub Jelinek <jakub@redhat.com>
168
169 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
170 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
171 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
172 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
173 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
174 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
175 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
176
177 2020-05-05 Martin Liska <mliska@suse.cz>
178
179 PR c/92472
180 * include/parallel/multiway_merge.h:
181 Use const for _Compare template argument.
182
183 2020-05-04 Fangrui Song <maskray@google.com>
184
185 * libsupc++/cxxabi.h (__cxa_finalize): Fix return type.
186
187 2020-05-04 Jonathan Wakely <jwakely@redhat.com>
188
189 * doc/xml/faq.xml: Use working link for SGI STL FAQ.
190 * doc/html/*: Regenerate.
191
192 PR libstdc++/94906
193 * src/c++17/memory_resource.cc
194 (monotonic_buffer_resource::_Chunk::release): Use size_t for shift
195 operands.
196
197 2020-05-04 Nathan Sidwell <nathan@acm.org>
198
199 PR libstdc++/94747
200 * libsupc++/dyncast.cc (__dynamic_cast): Cast offsetof to
201 ptrdiff_t before negation, to show intent more clearly.
202
203 2020-05-04 Jonathan Wakely <jwakely@redhat.com>
204
205 PR libstdc++/94936
206 * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools):
207 Add comment about single-threaded behaviour.
208 (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist
209 class member access out of loop.
210 (synchronized_pool_resource::synchronized_pool_resource())
211 (synchronized_pool_resource::~synchronized_pool_resource())
212 (synchronized_pool_resource::release()): Check __gthread_active_p
213 before creating and/or deleting the thread-specific data key.
214 (synchronized_pool_resource::_M_thread_specific_pools()): Adjust
215 assertions.
216 (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast
217 path for single-threaded case.
218 (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)):
219 Likewise. Return if unable to find a pool that owns the allocation.
220 * testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
221 New test.
222 * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New
223 test.
224 * testsuite/20_util/synchronized_pool_resource/release_single.cc: New
225 test.
226
227 2020-05-03 Jonathan Wakely <jwakely@redhat.com>
228
229 PR libstdc++/94933
230 * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types
231 usable in constant expressions.
232 * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and
233 non-scalars.
234
235 2020-05-01 Jonathan Wakely <jwakely@redhat.com>
236
237 PR libstdc++/94901
238 * testsuite/17_intro/badnames.cc: Test values between _E9 and _E24 too.
239
240 2020-05-01 Jonathan Wakely <jwakely@redhat.com>
241 Patrick Palka <ppalka@redhat.com>
242
243 PR libstdc++/92894
244 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove):
245 Add trait to determine return type and an alias for it.
246 (ranges::__cust_imove::_IMove::operator()): Use __result instead of
247 deduced return type.
248 (iter_rvalue_reference_t): Use _IMove::__type instead of checking
249 the result of ranges::iter_move.
250 (__detail::__indirectly_readable_impl): Use iter_rvalue_reference_t
251 instead of checking the result of ranges::iter_move.
252 * testsuite/24_iterators/customization_points/92894.cc: New test.
253 * testsuite/24_iterators/indirect_callable/92894.cc: New test.
254
255 2020-05-01 Jonathan Wakely <jwakely@redhat.com>
256
257 PR libstdc++/94901
258 * include/std/type_traits (__is_complete_or_unbounded): Replace
259 BADNAME _T with _Tp.
260 * testsuite/17_intro/badnames.cc: New test.
261
262 2020-04-30 Jonathan Wakely <jwakely@redhat.com>
263
264 PR libstdc++/89510
265 * include/bits/alloc_traits.h (allocator_traits::_S_construct)
266 (allocator_traits::_S_destroy)
267 (allocator_traits<allocator<T>>::construct): Use traits in
268 noexcept-specifiers.
269 * include/bits/allocator.h (allocator<void>::construct)
270 (allocator<void>::destroy): Likewise.
271 * include/ext/malloc_allocator.h (malloc_allocator::construct)
272 (malloc_allocator::destroy): Likewise.
273 * include/ext/new_allocator.h (new_allocator::construct)
274 (new_allocator::destroy): Likewise.
275 * testsuite/20_util/allocator/89510.cc: New test.
276 * testsuite/ext/malloc_allocator/89510.cc: New test.
277 * testsuite/ext/new_allocator/89510.cc: New test.
278
279 2020-04-29 Jonathan Wakely <jwakely@redhat.com>
280
281 PR libstdc++/94854
282 * include/bits/basic_string.tcc: Update comment about explicit
283 instantiations.
284
285 2020-04-28 Jonathan Wakely <jwakely@redhat.com>
286
287 PR libstdc++/91480
288 * include/bits/allocator.h (__cpp_lib_allocator_is_always_equal):
289 Remove non-standard macro.
290 * include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define
291 to indicate P1032R1 support.
292 * include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise.
293 * include/std/string_view (__cpp_lib_constexpr_string_view): Likewise.
294 * include/std/tuple (__cpp_lib_constexpr_tuple): Likewise.
295 * include/std/version (__cpp_lib_allocator_is_always_equal): Remove.
296 (__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view)
297 (__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define.
298 * testsuite/20_util/function_objects/constexpr_searcher.cc: Check
299 feature test macro.
300 * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise.
301 * testsuite/21_strings/basic_string_view/operations/copy/char/
302 constexpr.cc: Likewise.
303 * testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise.
304
305 PR libstdc++/94831
306 * include/bits/alloc_traits.h (_S_construct): Restore placement
307 new-expression for C++11/14/17 and call std::construct_at directly
308 for C++20.
309 * include/bits/stl_construct.h (_Construct): Revert to non-constexpr
310 function returning void.
311 * testsuite/20_util/specialized_algorithms/
312 uninitialized_value_construct/94831.cc: New test.
313 * testsuite/23_containers/vector/cons/94831.cc: New test.
314
315 2020-04-28 Patrick Palka <ppalka@redhat.com>
316
317 LWG 3433 subrange::advance(n) has UB when n < 0
318 * include/std/ranges (subrange::prev): Fix typo.
319 (subrange::advance): Handle a negative argument as per the proposed
320 resolution of LWG 3433.
321 * testsuite/std/ranges/subrange/lwg3433.cc: New test.
322
323 2020-04-28 Jonathan Wakely <jwakely@redhat.com>
324 Iain Sandoe <iain@sandoe.co.uk>
325
326 PR c++/94759
327 * include/std/coroutine: Implement handing for non-
328 class coroutine return types.
329
330 2020-04-24 Jonathan Wakely <jwakely@redhat.com>
331
332 * include/experimental/executor (service_already_exists): Make default
333 constructor public (LWG 3414).
334 * testsuite/experimental/net/execution_context/make_service.cc: Check
335 the service_already_exists can be default constructed.
336
337 2020-04-24 Kamlesh Kumar <kamleshbhalui@gmail.com>
338 Jonathan Wakely <jwakely@redhat.com>
339
340 PR libstdc++/90415
341 PR libstdc++/92156
342 * include/std/any (any): Rename template parameters for consistency
343 with the standard.
344 (any::_Decay): Rename to _Decay_if_not_any.
345 (any::any(T&&):: Remove is_constructible from constraints. Remove
346 non-standard overload.
347 (any::any(in_place_type_t<T>, Args&&...))
348 (any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
349 (any::emplace(Args&&...))
350 (any::emplace(initializer_list<U>, Args&&...)):
351 Use decay_t instead of _Decay.
352 * testsuite/20_util/any/cons/90415.cc: New test.
353 * testsuite/20_util/any/cons/92156.cc: New Test.
354 * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives
355 more robust.
356 * testsuite/20_util/any/modifiers/92156.cc: New test.
357
358 2020-04-23 Jonathan Wakely <jwakely@redhat.com>
359
360 * doc/xml/manual/status_cxx2020.xml: Update C++20 status table.
361 * doc/html/*: Regenerate.
362
363 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert
364 value for C++17 to 201803L because P0858R0 is supported for C++17.
365 * include/std/version (__cpp_lib_array_constexpr): Likewise.
366 * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
367 Check for value corresponding to P0031R0 features being tested.
368 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
369 Check for value corresponding to P0858R0 features being tested.
370
371 * include/std/version (__cpp_lib_three_way_comparison): Define for
372 freestanding builds.
373
374 2020-04-23 Thomas Rodgers <rodgert@appliantology.com>
375
376 * include/experimental/net/executor (system_context): Mark
377 system_context::system_context() = delete.
378 * testsuite/experimental/net/executor/1.cc: Add new
379 test to check system_context is not default constructible.
380
381 2020-04-23 Iain Sandoe <iain@sandoe.co.uk>
382
383 * include/std/coroutine: Update the inline namespace to __n4861.
384 Add the __cpp_lib_coroutine define, set to 201902L.
385 * include/std/version: Add __cpp_lib_coroutine, set to 201902L.
386
387 2020-04-22 Jonathan Wakely <jwakely@redhat.com>
388
389 * include/std/execution (__cpp_lib_execution): Define to indicate
390 support for P0024R2 and P1001R2.
391 * include/std/version (__cpp_lib_execution): Define.
392 * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro
393 defined by <algorithm>, move other tests to new tests ...
394 * testsuite/25_algorithms/pstl/feature_test-2.cc: New test.
395 * testsuite/25_algorithms/pstl/feature_test-3.cc: New test.
396 * testsuite/25_algorithms/pstl/feature_test-4.cc: New test.
397 * testsuite/25_algorithms/pstl/feature_test-5.cc: New test.
398
399 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define
400 different values for C++17 and C++20, to indicate different feature
401 sets. Update value for C++20 to indicate P1032R1 support.
402 * include/std/version (__cpp_lib_array_constexpr): Likewise.
403 * testsuite/23_containers/array/comparison_operators/constexpr.cc:
404 Check feature test macro.
405 * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
406 New test.
407 * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check
408 feature test macro.
409 * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test
410 in C++17 mode and check feature test macro.
411
412 * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define
413 here.
414 * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be
415 defined by <utility>.
416
417 * include/std/functional (__cpp_lib_concepts): Update macro value to
418 indicate P1964R2 support.
419 * include/std/version (__cpp_lib_concepts): Likewise.
420 * testsuite/std/concepts/1.cc: Adjust expected value.
421 * testsuite/std/concepts/2.cc: Likewise.
422
423 * include/std/functional (__cpp_lib_constexpr_invoke): Rename to
424 __cpp_lib_constexpr_functional.
425 * include/std/version (__cpp_lib_constexpr_invoke): Likewise.
426 * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust.
427
428 * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to
429 indicate P1006R1 support.
430 (__cpp_lib_to_address): Define to indicate P0653R2 support.
431 * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate
432 P1227R2 support.
433 * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate
434 P0769R2 support.
435 * include/std/atomic (__cpp_lib_atomic_float): Define to indicate
436 P0020R6 support.
437 * include/std/memory (__cpp_lib_assume_aligned): Define to indicate
438 P1007R3 support.
439 * include/std/memory_resource (__cpp_lib_polymorphic_allocator):
440 Define to indicate P0339R6 support.
441 * include/std/string_view (__cpp_lib_starts_ends_with): Define to
442 indicate P0457R2 support.
443 * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define
444 to indicate P0758R1 support.
445 (__cpp_lib_remove_cvref): Define to indicate P0550R2 support.
446 (__cpp_lib_type_identity): Define to indicate P0887R1 support.
447 * include/std/version (__cpp_lib_atomic_float)
448 (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref)
449 (__cpp_lib_type_identity, __cpp_lib_assume_aligned)
450 (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator)
451 (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with)
452 (__cpp_lib_to_address): Define.
453 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
454
455 * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old
456 macro.
457 * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion):
458 Likewise.
459 * include/std/version (__cpp_lib_map_insertion)
460 (__cpp_lib_unordered_map_insertion): Remove.
461
462 * include/std/condition_variable (__cpp_lib_jthread): Remove
463 redundant definition.
464 * include/std/stop_token (__cpp_lib_jthread): Update macro value to
465 indicate P1869R1 support.
466 * include/std/version (__cpp_lib_jthread): Update value.
467 * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check
468 for updated macro value.
469 * testsuite/30_threads/condition_variable_any/stop_token/2.cc:
470 Likewise.
471 * testsuite/30_threads/jthread/1.cc: Likewise.
472 * testsuite/30_threads/jthread/2.cc: Likewise.
473 * testsuite/30_threads/stop_token/1.cc: Likewise.
474 * testsuite/30_threads/stop_token/2.cc: Likewise.
475
476 * testsuite/21_strings/basic_string/erasure.cc: Check for
477 __cpp_lib_erase_if macro.
478 * testsuite/23_containers/deque/erasure.cc: Add header name to #error
479 messages.
480 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
481 * testsuite/23_containers/list/erasure.cc: Likewise.
482 * testsuite/23_containers/map/erasure.cc: Likewise.
483 * testsuite/23_containers/set/erasure.cc: Likewise.
484 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
485 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
486 * testsuite/23_containers/vector/erasure.cc: Likewise.
487
488 2020-04-21 Jonathan Wakely <jwakely@redhat.com>
489
490 * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way
491 to define operator<=>.
492 * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test.
493
494 * doc/Makefile.am (xml_sources_manual): Add missing XML files.
495 * doc/Makefile.in: Regenerate.
496 * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead
497 of "this page".
498 * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections
499 to the C++11 status table.
500 * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature
501 proposals with table matching contents of the C++14 standard.
502 * doc/xml/manual/status_cxx2017.xml: Add table matching contents of
503 the C++17 standard.
504 * doc/html/*: Regenerate.
505
506 PR c++/94149
507 * include/std/type_traits (__is_nt_constructible_impl): Add partial
508 specializations for bounded arrays with non-empty initializers.
509 * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test.
510
511 2020-04-20 Thomas Rodgers <trodgers@redhat.com>
512
513 * testsuite/lib/libstdc++.exp: Add additional_flags=
514 -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when
515 compiling with a newer Thread Building Blocks.
516
517 2020-04-20 Jonathan Wakely <jwakely@redhat.com>
518
519 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
520
521 * testsuite/20_util/is_constructible/51185.cc: Make test class a
522 non-aggregate so that the test verifies the same thing in all -std
523 modes.
524 * testsuite/20_util/is_constructible/value-2.cc: Adjust expected
525 results for some types when paren-init for aggregates is supported.
526
527 * include/std/version (__cpp_lib_three_way_comparison): Update value.
528 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
529 (__detail::__synth3way): Add noexcept-specifier.
530
531 * include/bits/stl_map.h (map): Define operator<=> and remove
532 operator< for C++20.
533 * include/bits/stl_multimap.h (multimap): Likewise.
534 * include/bits/stl_multiset.h (multiset): Likewise.
535 * include/bits/stl_set.h (set): Likewise.
536 * include/bits/stl_tree.h (_Rb_tree): Likewise.
537 (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
538 operator!= for C++20.
539 * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
540 * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
541 * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
542 * include/debug/set.h (__gnu_debug::set): Likewise.
543 * testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
544 * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
545 * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
546 * testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
547
548 2020-04-20 Matthias Kretz <kretz@kde.org>
549
550 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
551
552 2020-04-19 Jonathan Wakely <jwakely@redhat.com>
553
554 * include/bits/stl_queue.h (queue): Define operator<=> for C++20.
555 * include/bits/stl_stack.h (stack): Likewise.
556 * testsuite/23_containers/queue/cmp_c++20.cc: New test.
557 * testsuite/23_containers/stack/cmp_c++20.cc: New test.
558
559 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
560 Remove redundant operator!= for C++20.
561 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
562 Likewise.
563 * include/debug/unordered_map (unordered_map, unordered_multimap):
564 Likewise.
565 * include/debug/unordered_set (unordered_set, unordered_multiset):
566 Likewise.
567
568 PR other/94629
569 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix
570 redundant assignment in constructor.
571
572 2020-04-18 Jonathan Wakely <jwakely@redhat.com>
573
574 * include/std/chrono (duration, time_point): Define operator<=> and
575 remove redundant operator!= for C++20.
576 * testsuite/20_util/duration/comparison_operators/three_way.cc: New
577 test.
578 * testsuite/20_util/time_point/comparison_operators/three_way.cc: New
579 test.
580
581 * testsuite/util/native_type/native_priority_queue.hpp: Use
582 allocator_traits to rebind allocator.
583
584 2020-04-17 Jonathan Wakely <jwakely@redhat.com>
585
586 * include/bits/forward_list.h (forward_list): Define operator<=> and
587 remove redundant comparison operators for C++20.
588 * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
589 * include/bits/stl_deque.h (deque): Likewise.
590 * include/bits/stl_iterator.h (__normal_iterator): Likewise.
591 * include/bits/stl_list.h (list): Likewise.
592 * include/bits/stl_vector.h (vector): Likewise.
593 * include/debug/deque (__gnu_debug::deque): Likewise.
594 * include/debug/forward_list (__gnu_debug::forward_list): Likewise.
595 * include/debug/list (__gnu_debug::list): Likewise.
596 * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
597 Likewise.
598 * include/debug/vector (__gnu_debug::vector): Likewise.
599 * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
600 operator<=> for C++20.
601 * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
602 * testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
603 * testsuite/23_containers/list/cmp_c++20.cc: New test.
604 * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
605 * testsuite/23_containers/vector/cmp_c++20.cc: New test.
606
607 * include/bits/basic_string.h (basic_string): Define operator<=> and
608 remove redundant comparison operators for C++20.
609 * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
610 Add comparison_category members.
611 (__detail::__char_traits_cmp_cat): New helper to get comparison
612 category from char traits class.
613 * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
614 define for C++20.
615 (sub_match): Define operator<=> and remove redundant comparison
616 operators for C++20.
617 (match_results): Remove redundant operator!= for C++20.
618 * include/std/string_view (basic_string_view): Define operator<=> and
619 remove redundant comparison operators for C++20.
620 * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
621 test.
622 * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
623 New test.
624 * testsuite/21_strings/basic_string_view/operations/copy/char/
625 constexpr.cc: Initialize variable.
626 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
627 constexpr.cc: Likewise.
628 * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
629 dg-do directive and remove comments showing incorrect signatures.
630 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
631 Likewise.
632 * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
633 New test.
634 * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
635 New test.
636 * testsuite/28_regex/sub_match/compare_c++20.cc: New test.
637
638 2020-04-16 Jonathan Wakely <jwakely@redhat.com>
639
640 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
641 name of unused parameter.
642
643 2020-04-15 Jonathan Wakely <jwakely@redhat.com>
644
645 * include/bits/fs_dir.h (file_status): Define operator== for C++20.
646 (directory_entry): Define operator<=> and remove redundant comparison
647 operators for C++20.
648 * include/bits/fs_fwd.h (space_info): Define operator== for C++20.
649 * include/bits/fs_path.h (path): Define operator<=> and remove
650 redundant comparison operators for C++20.
651 * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
652 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
653 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
654 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
655
656 * include/bits/allocator.h (operator!=): Do not define for C++20.
657 * include/bits/locale_classes.h (operator!=): Likewise.
658 * include/bits/std_function.h (operator==(nullptr_t, const function&))
659 (operator!=(const function&, nullptr_t))
660 (operator!=(nullptr_t, const function&)): Likewise.
661 * include/ext/bitmap_allocator.h (operator!=): Likewise.
662 * include/ext/debug_allocator.h (operator!=): Likewise.
663 * include/ext/extptr_allocator.h (operator!=): Likewise.
664 * include/ext/malloc_allocator.h (operator!=): Likewise.
665 * include/ext/mt_allocator.h (operator!=): Likewise.
666 * include/ext/new_allocator.h (operator!=): Likewise.
667 * include/ext/pool_allocator.h (operator!=): Likewise.
668 * include/ext/throw_allocator.h (operator!=): Likewise.
669 * include/std/bitset (bitset::operator!=): Likewise.
670 * include/std/memory_resource (operator!=): Likewise.
671 * include/std/scoped_allocator (operator!=): Likewise.
672
673 * include/std/typeindex (operator<=>): Define for C++20.
674 * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
675
676 2020-04-14 Jonathan Wakely <jwakely@redhat.com>
677
678 * libsupc++/compare (compare_three_way): Fix constraint so that
679 BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
680 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
681 New test.
682
683 PR libstdc++/94562
684 * include/bits/shared_ptr.h (operator<=>): Define for C++20.
685 * include/bits/shared_ptr_base.h (operator<=>): Likewise.
686 * include/bits/unique_ptr.h (operator<=>): Add inline specifier.
687 * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
688 * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
689 std::less<A*> to be used when comparing std::shared_ptr<A> objects in
690 C++20.
691
692 PR libstdc++/94565
693 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
694 * testsuite/18_support/comparisons/categories/94565.cc: New test.
695
696 2020-04-13 Iain Sandoe <iain@sandoe.co.uk>
697
698 * include/std/coroutine: Update coroutines builtin define,
699 per n4861.
700
701 2020-04-09 Jonathan Wakely <jwakely@redhat.com>
702
703 * libsupc++/compare (compare_three_way): Fix noexcept-specifier.
704 (strong_order, weak_order, partial_order): Replace uses of <=> with
705 compare_three_way function object (LWG 3324).
706 * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
707 equality operator so that X satisfies three_way_comparable.
708 * testsuite/18_support/comparisons/algorithms/strong_order.cc:
709 Likewise.
710 * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
711
712 * include/bits/unique_ptr.h (operator<=>): Define for C++20.
713 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
714 * testsuite/20_util/default_delete/void_neg.cc: Likewise.
715 * testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
716 * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
717
718 2020-04-08 Jonathan Wakely <jwakely@redhat.com>
719
720 * include/bits/slice_array.h (operator==(const slice&, const slice&)):
721 Define for C++20.
722 * include/std/complex (operator==(const T&, const complex<T>&))
723 (operator!=(const complex<T>&, const complex<T>&))
724 (operator!=(const complex<T>&, const T&))
725 (operator!=(const T&, const complex<T>&)): Do not declare for C++20.
726 * testsuite/26_numerics/slice/compare.cc: New test.
727
728 * include/std/charconv (to_chars_result, from_chars_result): Add
729 defaulted equality comparisons for C++20.
730 * testsuite/20_util/from_chars/compare.cc: New test.
731 * testsuite/20_util/to_chars/compare.cc: New test.
732
733 2020-04-07 Jonathan Wakely <jwakely@redhat.com>
734
735 PR libstdc++/94520
736 * include/std/charconv (__integer_to_chars_result_type)
737 (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
738 allow use in C++14.
739 * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
740 use of std::string_view with std::string.
741 * testsuite/20_util/from_chars/2.cc: Likewise.
742 * testsuite/20_util/to_chars/1.cc: Likewise.
743 * testsuite/20_util/to_chars/2.cc: Likewise.
744
745 2020-04-06 Jonathan Wakely <jwakely@redhat.com>
746
747 PR libstdc++/94498
748 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
749 usable in constant expressions for C++20.
750 (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
751 _GLIBCXX20_CONSTEXPR.
752 (std::char_traits<char>, std::char_traits<wchar_t>)
753 (std::char_traits<char8_t>): Make move, copy and assign usable in
754 constant expressions for C++20.
755 (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
756 and copy usable in constant expressions for C++20.
757 * include/std/string_view (basic_string_view::copy): Add
758 _GLIBCXX20_CONSTEXPR.
759 * testsuite/21_strings/basic_string_view/operations/copy/char/
760 constexpr.cc: New test.
761 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
762 constexpr.cc: New test.
763
764 2020-04-05 Gerald Pfeifer <gerald@pfeifer.com>
765
766 * doc/xml/manual/appendix_contributing.xml: Refer to Git
767 documentation instead of Subversion. Switch to https.
768 * doc/html/manual/appendix_contributing.html: Regenerate.
769
770 2020-04-03 Jonathan Wakely <jwakely@redhat.com>
771
772 PR libstdc++/93960
773 * include/bits/ptr_traits.h (__to_address): Add special case for debug
774 iterators, to avoid dereferenceable check.
775 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
776 * testsuite/20_util/to_address/debug.cc: New test.
777
778 2020-04-01 Andrea Corallo <andrea.corallo@arm.com>
779
780 * testsuite/experimental/net/execution_context/use_service.cc:
781 Require pthread and gthreads.
782
783 2020-04-01 Gerald Pfeifer <gerald@pfeifer.com>
784
785 * doc/xml/manual/appendix_free.xml: Move "free books" list from
786 fsf.org to gnu.org.
787 * doc/html/manual/appendix_free.html: Regenerate.
788
789 2020-03-31 Ville Voutilainen <ville.voutilainen@gmail.com>
790
791 Library-side tests for parenthesized aggregate init
792
793 PR c++/92878
794 PR c++/92947
795
796 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
797 * testsuite/20_util/any/assign/92878_92947.cc: Likewise.
798 * testsuite/20_util/any/cons/92878_92947.cc: Likewise.
799 * testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
800 * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
801 * testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
802 * testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
803 * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
804 * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
805 Likewise.
806 * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
807 * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
808 * testsuite/20_util/variant/92878_92947.cc: Likewise.
809 * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
810 Likewise.
811 * testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
812 Likewise.
813 * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
814 Likewise.
815 * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
816 Likewise.
817 * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
818 Likewise.
819 * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
820 Likewise.
821 * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
822 * testsuite/23_containers/queue/92878_92947.cc: Likewise.
823 * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
824 Likewise.
825 * testsuite/23_containers/stack/92878_92947.cc: Likewise.
826 * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
827 Likewise.
828 * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
829 Likewise.
830 * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
831 Likewise.
832 * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
833 Likewise.
834 * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
835 Likewise.
836
837 2020-03-28 Jonathan Wakely <jwakely@redhat.com>
838
839 * testsuite/20_util/is_constructible/value-2.cc: Fix test to account
840 for changes due to parenthesized aggregate-initialization in C++20.
841 * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
842 with std::chrono::sys_time in C++20.
843
844 * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
845 to constrain C++20 versions of comparison operators. Fix backwards
846 logic of relational operators.
847 (move_iterator): Use requires-clause to constrain comparison operators
848 in C++20. Do not declare non-standard same-type overloads for C++20.
849 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
850 of comparisons and check using greedy_ops type.
851 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
852 * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
853 main function from compile-only test.
854 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
855
856 2020-03-27 Jonathan Wakely <jwakely@redhat.com>
857
858 * include/bits/range_cmp.h (__cpp_lib_ranges): Define.
859 * include/bits/stl_iterator.h: Check value of __cpp_concepts so that
860 C++20 concepts are required.
861 * include/bits/stl_iterator_base_types.h: Likewise.
862 * include/std/concepts: Likewise.
863 * include/std/version: Likewise.
864 * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
865 macro.
866
867 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
868 (reverse_iterator::iterator_category): Define for C++20.
869 (reverse_iterator): Define comparison operators correctly for C++20.
870 (__normal_iterator): Add constraints to comparison operators for C++20.
871 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
872 overload for input iterators.
873 (move_iterator): Add constraints to comparison operators for C++20.
874 Define operator<=> for C++20.
875 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
876 * testsuite/24_iterators/move_iterator/move_only.cc: New test.
877 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
878 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
879
880 * include/bits/iterator_concepts.h (__detail::__decay_copy)
881 (__detail::__member_begin, __detail::__adl_begin): Move here from
882 <bits/range_access.h>.
883 (__detail::__ranges_begin, __detail::__range_iter_t): Define.
884 * bits/range_access.h (__cust_access::__decay_copy)
885 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to
886 <bits/iterator_concepts.h>.
887 (ranges::iterator_t): Use __detail::__range_iter_t.
888 * include/bits/stl_iterator.h (back_insert_iterator): Simplify
889 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
890 (front_insert_iterator): Likewise.
891 (insert_iterator): Implement changes from P0896R4 for C++20.
892 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
893 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
894 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
895 for inclusion in synopsis_c++20.cc which expects different signatures
896 for some function templates.
897 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
898
899 * include/std/type_traits (__is_array_convertible): Move definition
900 to immediately after is_convertible.
901
902 2020-03-26 Jonathan Wakely <jwakely@redhat.com>
903
904 * include/std/chrono (chrono::days, chrono::weeks, chrono::years)
905 (chrono::months, chrono::sys_days, chrono::local_t)
906 (chrono::local_time, chrono::local_seconds, chrono::local_days):
907 Define for C++20.
908 (chrono::time_point): Add missing static assert.
909 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
910 * testsuite/std/time/clock/file/overview.cc: New test.
911 * testsuite/std/time/clock/file/members.cc: New test.
912 * testsuite/std/time/syn_c++20.cc: New test.
913
914 2020-03-25 Mike Crowe <mac@mcrowe.com>
915
916 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
917 test.
918 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
919 test.
920
921 2020-03-25 Jonathan Wakely <jwakely@redhat.com>
922
923 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
924 * include/std/chrono (filesystem::__file_clock): Here.
925 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
926 Define public member functions for C++20.
927 (is_clock, is_clock_v): Define traits for C++20.
928 * include/std/condition_variable (condition_variable::wait_until): Add
929 check for valid clock.
930 * include/std/future (_State_baseV2::wait_until): Likewise.
931 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
932 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
933 Likewise.
934 * include/std/thread (this_thread::sleep_until): Likewise.
935 * testsuite/30_threads/condition_variable/members/2.cc: Qualify
936 slow_clock with new namespace.
937 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New
938 test.
939 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
940 New test.
941 * testsuite/30_threads/future/members/clock_neg.cc: New test.
942 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
943 Qualify slow_clock with new namespace.
944 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/
945 clock_neg.cc: New test.
946 * testsuite/30_threads/shared_future/members/clock_neg.cc: New
947 test.
948 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
949 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
950 New test.
951 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
952 slow_clock with new namespace.
953 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
954 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
955 test.
956 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
957 * testsuite/std/time/traits/is_clock.cc: New test.
958 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
959 namespace.
960
961 2020-03-21 Jonathan Wakely <jwakely@redhat.com>
962
963 PR libstdc++/93245
964 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
965 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
966 Improve test coverage.
967
968 PR libstdc++/94242
969 * include/bits/fs_path.h (path::_S_str_convert): Replace first
970 parameter with basic_string_view so that strings with different
971 allocators can be accepted.
972 (path::generic_string<C,T,A>()): Use basic_string object that uses the
973 right allocator type.
974 * testsuite/27_io/filesystem/path/generic/94242.cc: New test.
975 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
976 test coverage.
977
978 2020-03-18 Jonathan Wakely <jwakely@redhat.com>
979
980 PR libstdc++/94033
981 * include/std/type_traits (__is_nt_default_constructible_atom): Remove.
982 (__is_nt_default_constructible_impl): Remove.
983 (__is_nothrow_default_constructible_impl): Remove.
984 (__is_nt_constructible_impl): Add bool template parameter. Adjust
985 partial specializations.
986 (__is_nothrow_constructible_impl): Replace class template with alias
987 template.
988 (is_nothrow_default_constructible): Derive from alias template
989 __is_nothrow_constructible_impl instead of
990 __is_nothrow_default_constructible_impl.
991 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
992
993 * include/std/stop_token (stop_token::_Stop_state_ref): Define
994 comparison operators explicitly if the compiler won't synthesize them.
995
996 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
997 __cpp_lib_concepts before using iter_reference_t.
998 * include/bits/stream_iterator.h (istream_iterator): Check
999 __cpp_lib_concepts before using default_sentinel_t.
1000 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
1001
1002 PR libstdc++/94203
1003 * include/experimental/executor (executor::executor(Executor)): Call
1004 make_shared directly instead of _M_create. Create _Tgt1 object.
1005 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
1006 Call allocate_shared directly instead of _M_create. Create _Tgt2
1007 object.
1008 (executor::target_type): Add cast needed for new _Tgt interface.
1009 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
1010 (executor::_Tgt): Define the same interface whether RTTI is enabled or
1011 not.
1012 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use
1013 std::type_info in the interface.
1014 (executor::_Tgt::_M_func): Add data member.
1015 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
1016 (executor::_Tgt1::_S_func): Define function to access target without
1017 depending on RTTI.
1018 (executor::_M_create): Remove.
1019 (operator==, operator!=): Simplify comparisons for executor.
1020 * include/experimental/socket (is_error_code_enum<socket_errc>):
1021 Define specialization before use.
1022 * testsuite/experimental/net/executor/1.cc: New test.
1023
1024 2020-03-16 Jonathan Wakely <jwakely@redhat.com>
1025
1026 PR libstdc++/94199
1027 * include/experimental/executor (service_already_exists): Add default
1028 constructor. Declare make_service to be a friend.
1029 * testsuite/experimental/net/execution_context/make_service.cc: New
1030 test.
1031
1032 2020-03-12 Jonathan Wakely <jwakely@redhat.com>
1033
1034 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
1035 a null pointer to functions with nonnull(1) attribute.
1036
1037 2020-03-11 Patrick Palka <ppalka@redhat.com>
1038
1039 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
1040 'address' -> 'std::__addressof'.
1041 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
1042 a non-forward input_range.
1043 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
1044 default constructor protected instead of deleted, like with
1045 input_iterator_wrapper.
1046 (test_range::iterator): Add comment explaining that this type is used
1047 only when the underlying wrapper is input_iterator_wrapper or
1048 output_iterator_wrapper. Remove delegating defaulted constructor so
1049 that the inherited default constructor is used instead.
1050
1051 LWG 3286 ranges::size is not required to be valid after a call to
1052 ranges::begin on an input range
1053 * include/std/ranges (subrange::subrange): Split single-argument
1054 constructor into two, one constrained by _S_store_size and another by
1055 !_S_store_size.
1056 (take_view::begin): Call size() before calling ranges::begin(_M_base).
1057 * testsuite/std/ranges/adaptors/lwg3286.cc: New test.
1058 * testsuite/std/ranges/subrange/lwg3286.cc: New test.
1059
1060 2020-03-10 Jonathan Wakely <jwakely@redhat.com>
1061
1062 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
1063 instead of _M_current.
1064 (split_view::_OuterIter::operator++): Likewise.
1065
1066 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
1067 (transform_view::_Iterator::operator*): Add noexcept-specifier.
1068 (transform_view::_Iterator::iter_move): Inline __iter_move body here.
1069 (split_view::_OuterIter::__current): Add noexcept.
1070 (split_view::_InnerIter::__iter_swap): Remove.
1071 (split_view::_InnerIter::__iter_move): Remove.
1072 (split_view::_InnerIter::_M_i_current): New accessors.
1073 (split_view::_InnerIter::__at_end): Use _M_i_current().
1074 (split_view::_InnerIter::operator*): Likewise.
1075 (split_view::_InnerIter::operator++): Likewise.
1076 (iter_move(const _InnerIter&)): Likewise.
1077 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
1078 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
1079 for iter_move and iter_swap on split_view's inner iterator.
1080
1081 PR c++/94117
1082 * include/std/ranges (ranges::transform_view::_Iterator::iter_move):
1083 Change expression in noexcept-specifier to match function body.
1084
1085 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
1086 comment explaining multiple dg-do directives.
1087 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
1088 so test is run as well as compiled.
1089
1090 2020-03-09 Jonathan Wakely <jwakely@redhat.com>
1091
1092 PR libstdc++/94063
1093 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
1094 handle concatenations that change the type of the first component.
1095 (path::operator+=(basic_string_view<value_type>)): Likewise.
1096 * testsuite/27_io/filesystem/path/concat/94063.cc: New test.
1097
1098 2020-03-06 Patrick Palka <ppalka@redhat.com>
1099
1100 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend
1101 join_view::_Sentinel<!_Const>.
1102 * testsuite/std/ranges/adaptors/join.cc: Augment test.
1103
1104 PR libstdc++/93978
1105 * include/bits/range_access.h (__cust_access::_Empty::operator()):
1106 Declare return type to be bool instead of auto.
1107 * testsuite/std/ranges/adaptors/93978.cc: New test.
1108
1109 2020-03-06 Jonathan Wakely <jwakely@redhat.com>
1110
1111 PR libstdc++/94069
1112 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
1113 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
1114 second argument to __glibcxx_rwlock_init.
1115 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
1116
1117 PR libstdc++/93244
1118 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
1119 test to not fail due to PR 94063.
1120 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
1121 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
1122
1123 2020-03-06 Andreas Krebbel <krebbel@linux.ibm.com>
1124
1125 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
1126 would match ENOSYS.
1127
1128 2020-03-05 Jonathan Wakely <jwakely@redhat.com>
1129
1130 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
1131 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
1132 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
1133 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
1134 for return value, and in comparison.
1135 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
1136
1137 PR libstdc++/94051
1138 * include/std/string_view: Include <bits/ostream_insert.h>.
1139 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
1140
1141 2020-03-04 Jonathan Wakely <jwakely@redhat.com>
1142
1143 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
1144
1145 2020-03-04 Patrick Palka <ppalka@redhat.com>
1146
1147 PR libstdc++/94017
1148 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
1149 condition for when to use memset, making sure to additionally check that
1150 the output pointer's value type is a non-volatile byte type. Instead of
1151 requiring that the fill type is a byte type, just require that it's an
1152 integral type.
1153 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
1154 New test.
1155 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
1156 New test.
1157 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
1158 blocked by PR 94017.
1159 * testsuite/25_algorithms/fill/94017.cc: New test.
1160 * testsuite/25_algorithms/fill_n/94017.cc: New test.
1161
1162 LWG 3355 The memory algorithms should support move-only input iterators
1163 introduced by P1207
1164 * include/bits/ranges_uninitialized.h
1165 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
1166 to copy __ifirst, which could be a move-only input iterator. Use
1167 operator- instead of ranges::distance to compute distance from a sized
1168 sentinel.
1169 (__uninitialized_copy_n_fn::operator()): Likewise.
1170 (__uninitialized_move_fn::operator()): Likewise.
1171 (__uninitialized_move_n_fn::operator()): Likewise.
1172 (__uninitialized_destroy_fn::operator()): Use std::move to avoid
1173 attempting to copy __first.
1174 (__uninitialized_destroy_n_fn::operator()): Likewise.
1175 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
1176 Augment test.
1177 * .../specialized_algorithms/uninitialized_copy/constrained.cc:
1178 Likewise.
1179 * .../specialized_algorithms/uninitialized_move/constrained.cc:
1180 Likewise.
1181
1182 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
1183 protected instead of private.
1184 (test_sized_range_sized_sent): New.
1185
1186 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
1187 New testsuite iterator.
1188 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
1189 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
1190
1191 * include/bits/ranges_uninitialized.h
1192 (uninitialized_copy_fn::operator()): Pass a reference type as the first
1193 argument to is_nothrow_assignable_v.
1194 (uninitialized_copy_fn::operator()): Likewise.
1195 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result
1196 with the input iterator stripped of its move_iterator.
1197 (uninitialized_move_n_fn::operator()): Likewise.
1198 (uninitialized_fill_fn::operator()): Pass a reference type as the first
1199 argument to is_nothrow_assignable_v.
1200 (uninitialized_fill_n_fn::operator()): Likewise.
1201
1202 2020-03-03 Jonathan Wakely <jwakely@redhat.com>
1203
1204 PR libstdc++/94013
1205 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
1206 traits to control when to use memmove and memcmp optimizations.
1207 (__is_nonvolatile_trivially_copyable): New helper trait.
1208 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
1209 use memcmp optimization with volatile data.
1210 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
1211 (__copy_or_move, __copy_or_move_backward): Use __memcpyable.
1212 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
1213 (__copy_move_backward_a2): Likewise.
1214 (__equal_aux1): Use __memcmpable.
1215 (__lexicographical_compare_aux): Do not use memcmp optimization with
1216 volatile data.
1217 * testsuite/25_algorithms/copy/94013.cc: New test.
1218 * testsuite/25_algorithms/copy_backward/94013.cc: New test.
1219 * testsuite/25_algorithms/equal/94013.cc: New test.
1220 * testsuite/25_algorithms/fill/94013.cc: New test.
1221 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
1222 * testsuite/25_algorithms/move/94013.cc: New test.
1223 * testsuite/25_algorithms/move_backward/94013.cc: New test.
1224
1225 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
1226 Avoid redundant iterator comparisons (LWG 3410).
1227
1228 2020-03-02 Jonathan Wakely <jwakely@redhat.com>
1229
1230 PR libstdc++/93972
1231 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to
1232 differ.
1233 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
1234
1235 * include/std/ranges (__detail::__maybe_empty_t): Rename to
1236 __maybe_present_t.
1237 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
1238
1239 * include/bits/ranges_algo.h (shift_right): Add 'typename' to
1240 dependent type.
1241
1242 2020-03-01 H.J. Lu <hongjiu.lu@intel.com>
1243
1244 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
1245
1246 2020-02-29 John David Anglin <danglin@gcc.gnu.org>
1247
1248 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
1249 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
1250 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
1251 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
1252 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
1253
1254 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
1255 Add libatomic option.
1256 * testsuite/30_threads/jthread/jthread.cc: Likewise.
1257
1258 2020-02-29 François Dumont <fdumont@gcc.gnu.org>
1259
1260 * include/bits/stl_algo.h
1261 (__find_if, __count_if, __is_permutation, std::is_permutation): Move...
1262 * include/bits/stl_algobase.h: ...here.
1263 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
1264
1265 2020-02-29 John David Anglin <danglin@gcc.gnu.org>
1266
1267 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
1268 option.
1269 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
1270 Likewise.
1271 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
1272 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
1273 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
1274 * testsuite/30_threads/stop_token/stop_source.cc: Likewise.
1275 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
1276 * testsuite/30_threads/stop_token/stop_token.cc: Likewise.
1277 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
1278 Likewise.
1279
1280 PR libstdc++/92906
1281 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
1282
1283 2020-02-28 Patrick Palka <ppalka@redhat.com>
1284
1285 PR libstdc++/93972
1286 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
1287 Fix condition for when to use memcmp, making it consistent with the
1288 corresponding condition used in std::lexicographical_compare.
1289 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
1290
1291 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
1292 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to
1293 existing signatures for C++2a.
1294
1295 2020-02-28 Jonathan Wakely <jwakely@redhat.com>
1296
1297 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
1298 test instead of just compiling it.
1299
1300 2020-02-28 Patrick Palka <ppalka@redhat.com>
1301
1302 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
1303 whenever the underlying range models common_range.
1304
1305 * include/std/ranges (__detail::_CachedPosition): New struct.
1306 (views::filter_view::_S_needs_cached_begin): New member variable.
1307 (views::filter_view::_M_cached_begin): New member variable.
1308 (views::filter_view::begin): Use _M_cached_begin to cache its
1309 result.
1310 (views::drop_view::_S_needs_cached_begin): New static member variable.
1311 (views::drop_view::_M_cached_begin): New member variable.
1312 (views::drop_view::begin): Use _M_cached_begin to cache its result
1313 when _S_needs_cached_begin.
1314 (views::drop_while_view::_M_cached_begin): New member variable.
1315 (views::drop_while_view::begin): Use _M_cached_begin to cache its
1316 result.
1317 (views::reverse_view::_S_needs_cached_begin): New static member
1318 variable.
1319 (views::reverse_view::_M_cached_begin): New member variable.
1320 (views::reverse_view::begin): Use _M_cached_begin to cache its result
1321 when _S_needs_cached_begin.
1322 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
1323 drop_view::begin caches its result.
1324 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
1325 that drop_while_view::begin caches its result.
1326 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
1327 filter_view::begin caches its result.
1328 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
1329 reverse_view::begin caches its result.
1330
1331 2020-02-28 Jonathan Wakely <jwakely@redhat.com>
1332
1333 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
1334 filesystems that silently truncate timestamps.
1335 * testsuite/experimental/filesystem/operations/last_write_time.cc:
1336 Likewise.
1337
1338 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable
1339 -Wstringop-overflow warnings.
1340
1341 2020-02-27 Jonathan Wakely <jwakely@redhat.com>
1342
1343 * testsuite/lib/libstdc++.exp (v3_target_compile): Add
1344 -fdiagnostics-urls=never to options.
1345
1346 2020-02-27 Patrick Palka <ppalka@redhat.com>
1347
1348 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend
1349 _Iterator<!_Const>.
1350 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
1351 (take_view::_Sentinel<_Const>): Likewise.
1352 (take_while_view::_Sentinel<_Const>): Likewise.
1353 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
1354 * testsuite/std/ranges/adaptors/split.cc: Augment test.
1355 * testsuite/std/ranges/adaptors/take.cc: Augment test.
1356 * testsuite/std/ranges/adaptors/take_while.cc: Augment test.
1357 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
1358
1359 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
1360 base() of a vector<>::iterator is a pointer.
1361 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
1362 * testsuite/25_algorithms/move/constrained.cc: Likewise.
1363 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
1364 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
1365 instead of &foo[0].
1366 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
1367 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
1368 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
1369 * testsuite/25_algorithms/sort/constrained.cc: Likewise.
1370 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
1371
1372 2020-02-27 Jonathan Wakely <jwakely@redhat.com>
1373
1374 * include/debug/array (operator<=>): Define for C++20.
1375 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
1376 Adjust dg-error line numbers.
1377 * testsuite/23_containers/array/tuple_interface/
1378 tuple_element_debug_neg.cc: Likewise.
1379
1380 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
1381 defining _GLIBCXX_ASSERTIONS.
1382 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
1383 * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
1384 * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
1385 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
1386 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
1387 * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
1388 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
1389 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
1390 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
1391 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
1392 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
1393 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
1394
1395 * include/debug/string (__gnu_debug::basic_string::insert): Fix for
1396 C++98 where the member function of the base class returns void.
1397
1398 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
1399 equality comparisons that support value-initialized iterators.
1400
1401 * include/bits/boost_concept_check.h (__function_requires): Add
1402 _GLIBCXX14_CONSTEXPR.
1403 * testsuite/25_algorithms/min/concept_checks.cc: New test.
1404
1405 2020-02-26 Patrick Palka <ppalka@redhat.com>
1406
1407 PR libstdc++/93936
1408 * include/std/ranges (split_view::_InnerIter::operator==): Compare
1409 the operands' _M_i rather than their _M_i.current().
1410 * testsuite/std/ranges/adaptors/split.cc: Augment test.
1411
1412 P1645R1 constexpr for <numeric> algorithms
1413 * include/bits/stl_numeric.h (iota, accumulate, inner_product,
1414 partial_sum, adjacent_difference): Make conditionally constexpr for
1415 C++20.
1416 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
1417 test macro.
1418 (reduce, transform_reduce, exclusive_scan, inclusive_scan,
1419 transform_exclusive_scan, transform_inclusive_scan): Make conditionally
1420 constexpr for C++20.
1421 * include/std/version (__cpp_lib_constexpr_numeric): Define.
1422 * testsuite/26_numerics/accumulate/constexpr.cc: New test.
1423 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
1424 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
1425 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
1426 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
1427 * testsuite/26_numerics/iota/constexpr.cc: Likewise.
1428 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
1429 * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
1430 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
1431 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
1432 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
1433
1434 2020-02-26 Jonathan Wakely <jwakely@redhat.com>
1435
1436 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
1437 variables in smaller scope and avoid calling ranges::distance when we
1438 know they are pointers. Remove statically-unreachable use of
1439 __builtin_unreachable().
1440 * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
1441 Define inline.
1442
1443 * include/std/ranges (__detail::__maybe_empty_t): Define new helper
1444 alias.
1445 (__detail::__maybe_const_t): Likewise.
1446 (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
1447 (transform_view, take_view, take_while_view, elements_view): Use
1448 __maybe_const_t.
1449 (join_view, split_view): Use both.
1450
1451 2020-02-25 Patrick Palka <ppalka@redhat.com>
1452
1453 LWG 3397 basic_istream_view::iterator should not provide
1454 iterator_category
1455 * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
1456 Rename to ...
1457 (basic_istream_view:_Iterator::iterator_concept): ... this.
1458 * testsuite/std/ranges/istream_view.cc: Augment test.
1459
1460 LWG 3325 Constrain return type of transformation function for
1461 transform_view
1462 * include/std/ranges (transform_view): Constrain the return type of the
1463 transformation function as per LWG 3325.
1464 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
1465
1466 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
1467 * include/std/ranges (join_view::_Iterator::operator--): Require that
1468 range_reference_t<_Base> models common_range.
1469 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
1470
1471 LWG 3301 transform_view::_Iterator has incorrect iterator_category
1472 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
1473 determination of iterator_category as per LWG 3301.
1474 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
1475
1476 LWG 3292 iota_view is under-constrained
1477 * include/std/ranges (iota_view): Require that _Winc models semiregular
1478 as per LWG 3292.
1479 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
1480
1481 2020-02-25 Jonathan Wakely <jwakely@redhat.com>
1482
1483 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
1484 during constant evaluation. Call __builtin_memmove directly instead of
1485 __memmove.
1486 (__copy_or_move_backward): Likewise.
1487 * include/bits/stl_algobase.h (__memmove): Remove.
1488 (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
1489 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
1490 Use __builtin_memmove directly instead of __memmove.
1491 (__copy_move_a2): Do not use memmove during constant evaluation.
1492 (__copy_move_backward_a2): Use _IsMove constant to select correct
1493 __copy_move_backward specialization.
1494 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
1495 begin turned into moves during constant evaluation.
1496
1497 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
1498 previous commit.
1499
1500 PR libstdc++/93872
1501 * include/bits/stl_algobase.h (__memmove): Cast away const before
1502 doing move assignment.
1503 * testsuite/25_algorithms/move/93872.cc: New test.
1504 * testsuite/25_algorithms/move_backward/93872.cc: New test.
1505
1506 2020-02-24 Patrick Palka <ppalka@redhat.com>
1507
1508 PR libstdc++/93884
1509 * include/bits/ranges_algobase.h (__copy_or_move,
1510 __copy_or_move_backward): Don't inspect the iter_value_t of the output
1511 iterator, instead inspect its iterator_traits directly.
1512 * include/bits/stl_iterator.h (back_insert_iterator::container):
1513 Conditionally initialize.
1514 (back_insert_iterator::difference_type): Conditionally define.
1515 (back_insert_iterator::back_insert_iterator): Conditionally define this
1516 default constructor.
1517 (front_insert_iterator::container): Conditionally initialize.
1518 (front_insert_iterator::difference_type): Conditionally define.
1519 (front_insert_iterator::front_insert_iterator): Conditionally define
1520 this default constructor.
1521 * 24_iterators/back_insert_iterator/pr93884.cc: New test.
1522 * 24_iterators/front_insert_iterator/pr93884.cc: New test.
1523
1524 P0769R2 Add shift to <algorithm>
1525 * include/bits/ranges_algo.h (shift_left, shift_right): New.
1526 * testsuite/25_algorithms/shift_left/1.cc: New test.
1527 * testsuite/25_algorithms/shift_right/1.cc: New test.
1528
1529 2020-02-24 Jonathan Wakely <jwakely@redhat.com>
1530
1531 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
1532 Make noexcept-specifier conditional.
1533 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
1534 noexcept-specifier.
1535
1536 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
1537 Add constructor.
1538 (operator==(istream_iterator, default_sentinel_t)): Add operator.
1539 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
1540 * include/bits/streambuf_iterator.h
1541 (istreambuf_iterator(default_sentinel_t)): Add constructor.
1542 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
1543 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
1544 New test.
1545 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
1546 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
1547 New test.
1548 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
1549
1550 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
1551 (ranges::enable_view): Simplify (LWG 3326).
1552 * include/bits/range_access.h (ranges::enable_view): Declare.
1553 * include/bits/regex.h (__enable_view_impl): Remove partial
1554 specialization.
1555 * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
1556 * include/bits/stl_set.h (__enable_view_impl): Likewise.
1557 * include/bits/unordered_set.h (__enable_view_impl): Likewise.
1558 * include/debug/multiset.h (__enable_view_impl): Likewise.
1559 * include/debug/set.h (__enable_view_impl): Likewise.
1560 * include/debug/unordered_set (__enable_view_impl): Likewise.
1561 * include/experimental/string_view (ranges::enable_view): Define
1562 partial specialization.
1563 * include/std/span (ranges::enable_view): Likewise.
1564 * include/std/string_view (ranges::enable_view): Likewise.
1565 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
1566
1567 2020-02-21 Jonathan Wakely <jwakely@redhat.com>
1568
1569 * include/std/optional (operator<=>(optional<T>, optional<U>))
1570 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
1571 Define for C++20.
1572 * include/std/tuple (__tuple_cmp): New helper function for <=>.
1573 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
1574 * include/std/variant (operator<=>(variant<T...>, variant<T...>))
1575 (operator<=>(monostate, monostate)): Define for C++20.
1576 * testsuite/20_util/optional/relops/three_way.cc: New test.
1577 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
1578 * testsuite/20_util/variant/89851.cc: Move to ...
1579 * testsuite/20_util/variant/relops/89851.cc: ... here.
1580 * testsuite/20_util/variant/90008.cc: Move to ...
1581 * testsuite/20_util/variant/relops/90008.cc: ... here.
1582 * testsuite/20_util/variant/relops/three_way.cc: New test.
1583
1584 2020-02-20 Patrick Palka <ppalka@redhat.com>
1585
1586 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
1587 function.
1588 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use
1589 __maybe_refwrap to capture lvalue references by reference, and then use
1590 unwrap_reference_t to forward the by-reference captures as references.
1591 * testsuite/std/ranges/adaptors/split.cc: Augment test.
1592 * testsuite/std/ranges/adaptors/split_neg.cc: New test.
1593
1594 * include/std/ranges (iota_view): Forward declare _Sentinel.
1595 (iota_view::_Iterator): Befriend _Sentinel.
1596 (iota_view::_Sentinel::_M_equal): New member function.
1597 (iota_view::_Sentinel::operator==): Use it.
1598 (views::_Iota::operator()): Forward __f using the correct type.
1599 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
1600 with integers of different signedness, to appease iota_view's deduction
1601 guide.
1602 * testsuite/std/ranges/iota/iota_view.cc: Augment test.
1603
1604 2020-02-20 Jonathan Wakely <jwakely@redhat.com>
1605
1606 * include/bits/range_access.h (ranges::begin): Reject array of
1607 incomplete type.
1608 (ranges::end, ranges::size): Require arrays to be bounded.
1609 (ranges::data): Require lvalue or borrowed_range.
1610 (ranges::iterator_t): Remove constraint.
1611 * testsuite/std/ranges/access/begin.cc: Do not check array of
1612 incomplete type.
1613 * testsuite/std/ranges/access/begin_neg.cc: New test.
1614 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
1615 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
1616 * testsuite/std/ranges/access/ssize.cc: Do not check array of
1617 incomplete type.
1618
1619 * include/std/system_error (error_category::operator<=>)
1620 (operator<=>(const error_code&, const error_code&))
1621 (operator<=>(const error_condition&, const error_condition&)): Define
1622 for C++20.
1623 * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
1624 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
1625 test.
1626 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
1627 incorrect comment.
1628 * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
1629 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
1630 incorrect comment.
1631 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
1632 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
1633 incorrect comment.
1634 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
1635 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
1636 Remove incorrect comment.
1637 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
1638 test.
1639
1640 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
1641
1642 * include/std/thread (thread::id::operator<=>): Define for C++20.
1643 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
1644 functions in namespace std.
1645 * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
1646
1647 2020-02-19 Patrick Palka <ppalka@redhat.com>
1648
1649 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
1650 null terminator of the underlying string as part of the test_range.
1651 (main): Call test03.
1652
1653 2020-02-19 Jonathan Wakely <jwakely@redhat.com>
1654
1655 * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
1656 requirement (LWG 3385).
1657 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
1658 expected declaration.
1659
1660 * include/std/ranges (take_while_view, drop_view, drop_while_view)
1661 (elements_view:_Iterator): Initialize data members (LWG 3364).
1662
1663 * libsupc++/compare (three_way_comparable): Remove always-false check
1664 that should have been removed with weak_equality (P1959R0).
1665 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
1666
1667 * include/std/concepts (__detail::__partially_ordered_with): Move here
1668 from <compare>.
1669 (totally_ordered, totally_ordered_with): Use __partially_ordered_with
1670 to simplify definition (LWG 3331).
1671 * libsupc++/compare (__detail::__partially_ordered_with): Move to
1672 <concepts>.
1673
1674 * include/std/concepts (totally_ordered_with): Remove redundant
1675 requirement (LWG 3329).
1676
1677 * include/std/ranges (__detail::__convertible_to_non_slicing): New
1678 helper concept.
1679 (__detail::__pair_like_convertible_to): Remove.
1680 (__detail::__pair_like_convertible_from): Add requirements for
1681 non-slicing conversions.
1682 (subrange): Constrain constructors with __convertible_to_non_slicing.
1683 Remove constructors from pair-like types. Add new deduction guide.
1684 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
1685
1686 * include/bits/iterator_concepts.h (iter_move): Add declaration to
1687 prevent unqualified lookup finding a suitable declaration (LWG 3247).
1688
1689 * include/std/memory_resource (polymorphic_allocator::allocate)
1690 (polymorphic_allocator::allocate_object): Change type of exception to
1691 bad_array_new_length (LWG 3237).
1692 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
1693
1694 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
1695 * include/std/version (__cpp_lib_unwrap_ref): Likewise.
1696 * testsuite/20_util/unwrap_reference/1.cc: Check macro.
1697 * testsuite/20_util/unwrap_reference/3.cc: New test.
1698
1699 * include/std/numeric (midpoint(T8, T*)): Do not check for complete
1700 type during overload resolution, use static assert instead (LWG 3200).
1701 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
1702 incomplete type.
1703 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
1704
1705 * include/std/span (span(T (&)[N])): Use non-deduced context to
1706 prevent first parameter from interfering with class template argument
1707 deduction (LWG 3369).
1708 * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
1709 * testsuite/23_containers/span/lwg3255.cc: Check for construction from
1710 rvalues.
1711
1712 * include/std/span (span::const_iterator, span::const_reverse_iterator)
1713 (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
1714 Remove (LWG 3320).
1715 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
1716 and cend.
1717 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
1718 Likewise.
1719 * testsuite/20_util/specialized_algorithms/uninitialized_copy/
1720 constrained.cc: Likewise.
1721 * testsuite/20_util/specialized_algorithms/
1722 uninitialized_default_construct/constrained.cc: Likewise.
1723 * testsuite/20_util/specialized_algorithms/uninitialized_fill/
1724 constrained.cc: Likewise.
1725 * testsuite/20_util/specialized_algorithms/uninitialized_move/
1726 constrained.cc: Likewise.
1727 * testsuite/20_util/specialized_algorithms/
1728 uninitialized_value_construct/constrained.cc: Likewise.
1729
1730 * include/bits/range_access.h (range_size_t): Define alias template.
1731 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
1732 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
1733
1734 * include/std/ranges (filter_view, transform_view, take_view)
1735 (join_view, split_view, reverse_view): Remove commented-out converting
1736 constructors (LWG 3280).
1737
1738 * include/std/memory (uninitialized_construct_using_allocator): Use
1739 std::construct_at (LWG 3321).
1740
1741 * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
1742 (polymorphic_allocator::allocate_object)
1743 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
1744
1745 LWG 3379. "safe" in several library names is misleading
1746 * include/bits/range_access.h (enable_safe_range): Rename to
1747 enable_borrowed_range.
1748 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
1749 (safe_range): Rename to borrowed_range.
1750 * include/bits/ranges_algo.h: Adjust to use new names.
1751 * include/bits/ranges_algobase.h: Likewise.
1752 * include/bits/ranges_uninitialized.h: Likewise.
1753 * include/std/ranges: Likewise.
1754 (safe_iterator_t): Rename to borrowed_iterator_t.
1755 (safe_subrange_t): Rename to borrowed_subrange_t.
1756 * include/std/span: Adjust to use new names.
1757 * include/std/string_view: Likewise.
1758 * include/experimental/string_view: Likewise.
1759 * testsuite/std/ranges/access/begin.cc: Likewise.
1760 * testsuite/std/ranges/access/cbegin.cc: Likewise.
1761 * testsuite/std/ranges/access/cdata.cc: Likewise.
1762 * testsuite/std/ranges/access/cend.cc: Likewise.
1763 * testsuite/std/ranges/access/crbegin.cc: Likewise.
1764 * testsuite/std/ranges/access/crend.cc: Likewise.
1765 * testsuite/std/ranges/access/data.cc: Likewise.
1766 * testsuite/std/ranges/access/end.cc: Likewise.
1767 * testsuite/std/ranges/access/rbegin.cc: Likewise.
1768 * testsuite/std/ranges/access/rend.cc: Likewise.
1769 * testsuite/std/ranges/safe_range.cc: Likewise.
1770 * testsuite/std/ranges/safe_range_types.cc: Likewise.
1771 * testsuite/util/testsuite_iterators.h: Likewise.
1772
1773 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
1774 (tuple_element<1, const subrange<I, S, K>>): Add partial
1775 specializations (LWG 3398).
1776 * testsuite/std/ranges/subrange/tuple_like.cc: New test.
1777
1778 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
1779 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
1780 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
1781
1782 2020-02-18 Patrick Palka <ppalka@redhat.com>
1783
1784 P1983R0 Wording for GB301, US296, US292, US291, and US283
1785 * include/std/ranges (filter_view::pred): New member function.
1786 (join_view::_Iterator::_Iterator): Remove now-redundant comment since
1787 P1983R0 fixes the highlighted issue in the same way.
1788 (join_view::_Iterator<_Const>): Add friend
1789 join_view::_Iterator<!_Const>.
1790 (join_view::_M_inner): Remove mutable specifier, effectively reverting
1791 the proposed wording changes of P3278.
1792 (join_view::begin): Refine the condition for when to return a const
1793 iterator.
1794 (split_view::_OuterIter::_OuterIter): Adjust constraints.
1795 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
1796 exists and works.
1797
1798 2020-02-18 Jonathan Wakely <jwakely@redhat.com>
1799
1800 PR libstdc++/93818
1801 * include/std/ranges (_RangeAdaptor): Add deduction guide.
1802 (filter_view::_Iterator): Add alias _Vp_iter and use in place of
1803 iterator_t<_Vp>.
1804 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
1805 (transform_view::_Iterator): Add alias _Base_iter and use in place of
1806 iterator_t<_Base>.
1807 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
1808 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
1809 (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
1810 (split_view::_InnerIter::_S_iter_cat()): Likewise.
1811
1812 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
1813 assumption that long is wider than int.
1814 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
1815 * testsuite/20_util/integer_comparisons/less.cc: Likewise.
1816 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
1817 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
1818
1819 P1976R2 Fixed-size span construction from dynamic range
1820 * include/std/span (__cpp_lib_span): Update value.
1821 (span(It, size_type), span(It, End)): Make conditionally explicit. Add
1822 assertion.
1823 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
1824 constraints.
1825 (span::first<Count>(), span::last<Count>()): Use explicit type in
1826 return statement.
1827 (as_bytes, as_writable_bytes): Likewise.
1828 * include/std/version (__cpp_lib_span): Update value.
1829 * testsuite/23_containers/span/1.cc: Check new value.
1830 * testsuite/23_containers/span/2.cc: Check new value.
1831 * testsuite/23_containers/span/explicit.cc: New test.
1832
1833 * include/std/span (span::__is_compatible_array): Simplify alias
1834 template by using requires-clause.
1835 (span::__is_compatible_ref): New alias template for constraining
1836 constructors.
1837 (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
1838 (span(It, size_type), span(It, End)): Use __is_compatible_ref.
1839 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
1840 redundant parentheses.
1841 (span(R&&)): Add missing constraints.
1842
1843 * include/std/span (span): Reorder members and rename template
1844 parameters to match declarations in the C++2a working paper.
1845
1846 P2116R0 Remove tuple-like protocol support from fixed-extent span
1847 * include/std/span (get, tuple_size, tuple_element): Remove.
1848 * testsuite/23_containers/span/everything.cc: Remove checks for
1849 tuple-like API.
1850 * testsuite/23_containers/span/get_neg.cc: Remove.
1851 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
1852 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
1853 * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
1854
1855 2020-02-17 Patrick Palka <ppalka@redhat.com>
1856
1857 P2106R0 Alternative wording for GB315 and GB316
1858 * include/bits/ranges_algo.h (in_fun_result): New.
1859 (for_each_result, for_each_n_result): Change into an alias of
1860 in_fun_result.
1861 (in_in_result): New.
1862 (mismatch_result): Change into an alias of in_in_result.
1863 (copy_if_result): Change into an alias of in_out_result.
1864 (swap_ranges_result): Change into an alias of in_in_result.
1865 (unary_transform_result): Change into an alias of in_out_result.
1866 (in_in_out_result): New.
1867 (binary_transform_result): Change into an alias of in_in_out_result.
1868 (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
1869 remove_copy_result, unique_copy_result, reverse_copy_result,
1870 rotate_copy_result, partial_sort_copy_result): Change into an alias of
1871 in_out_result.
1872 (in_out_out_result): New.
1873 (partition_copy_result, merge_result): Change into an alias of
1874 in_out_out_result.
1875 (set_union_result, set_intersection_result): Change into an alias of
1876 in_in_out_result.
1877 (set_difference_result): Change into an alias of in_out_result.
1878 (set_symmetric_difference): Change into an alias of in_in_out_result.
1879 (min_max_result): New.
1880 (minmax_result, minmax_element_result): Change into an alias of
1881 min_max_result.
1882 (in_found_result): New.
1883 (next_permutation_result, prev_permutation_result): Change into an alias
1884 of in_found_result.
1885 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
1886 Adjust following changes to next_permutation_result and
1887 prev_permutation_result.
1888 * include/bits/ranges_algobase.h (in_out_result): New.
1889 (copy_result, move_result, move_backward_result, copy_backward_result,
1890 copy_n_result): Change into an alias of in_out_result.
1891 * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
1892 uninitialized_copy_n_result, uninitialized_move_result,
1893 uninitialized_move_n_result): Likewise.
1894 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
1895 structured bindings.
1896 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
1897
1898 P1243R4 Rangify new algorithms
1899 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
1900 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
1901 * testsuite/25_algorithms/clamp/constrained.cc: New test.
1902 * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
1903 * testsuite/25_algorithms/sample/constrained.cc: New test.
1904
1905 2020-02-17 Jonathan Wakely <jwakely@redhat.com>
1906
1907 P1964R2 Wording for boolean-testable
1908 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
1909 (__adjacent_find_fn): Cast result of predicate to bool.
1910 * include/std/concepts (__boolean): Remove.
1911 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
1912 new helper concepts.
1913 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
1914 (predicate): Use __boolean_testable instead of boolean.
1915 * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
1916 Likewise.
1917
1918 P1970R2 Consistency for size() functions: Add ranges::ssize
1919 * include/bits/range_access.h (_SSize, ssize): Define for C++20.
1920 * testsuite/std/ranges/access/ssize.cc: New test.
1921
1922 P1956R1 On the names of low-level bit manipulation functions
1923 * include/bits/hashtable_policy.h: Update comment.
1924 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
1925 (ispow2, ceil2, floor2, log2p1): Likewise.
1926 (__cpp_lib_int_pow2): Add feature test macro.
1927 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
1928 * include/std/memory (assume_aligned): Adjust use of ispow2.
1929 * include/std/version (__cpp_lib_int_pow2): Add.
1930 * libsupc++/new_opa.cc: Adjust use of __ispow2.
1931 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
1932 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
1933 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
1934 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
1935 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
1936 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
1937 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
1938 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
1939 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
1940 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
1941 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
1942 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
1943
1944 * include/std/charconv: Add comment.
1945
1946 PR libstdc++/92546 (partial)
1947 * include/bits/random.h (uniform_random_bit_generator): Move definition
1948 to <bits/uniform_int_dist.h>.
1949 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
1950 of <bits/random.h>.
1951 * include/bits/ranges_algobase.h: Do not include <cmath>.
1952 * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
1953 Move here.
1954 * include/std/ranges: Do not include <limits>.
1955 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
1956
1957 PR libstdc++/92546 (partial)
1958 * include/Makefile.am: Add new header.
1959 * include/Makefile.in: Regenerate.
1960 * include/bits/int_limits.h: New header.
1961 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
1962 numeric_limits with __detail::__int_limits.
1963 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
1964 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
1965 Likewise.
1966 * include/std/charconv (__to_chars_8, __from_chars_binary)
1967 (__from_chars_alpha_to_num, from_chars): Likewise.
1968 * include/std/memory_resource (polymorphic_allocator::allocate)
1969 (polymorphic_allocator::allocate_object): Likewise.
1970 * include/std/string_view (basic_string_view::_S_compare): Likewise.
1971 * include/std/utility (in_range): Likewise.
1972 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
1973 extra error about incomplete type __int_limits<bool>.
1974 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
1975 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
1976 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
1977 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
1978 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
1979 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
1980 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
1981 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
1982 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
1983 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
1984 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
1985 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
1986
1987 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
1988 value for partial_ordering::unordered.
1989
1990 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
1991 const-qualified expression variations.
1992 * include/std/concepts (copyable): Likewise.
1993
1994 * include/std/type_traits (__is_standard_integer): New helper trait.
1995 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
1996 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
1997 * include/std/version (__cpp_lib_integer_comparison_functions): Define.
1998 * testsuite/20_util/integer_comparisons/1.cc: New test.
1999 * testsuite/20_util/integer_comparisons/2.cc: New test.
2000 * testsuite/20_util/integer_comparisons/equal.cc: New test.
2001 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
2002 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
2003 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
2004 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
2005 * testsuite/20_util/integer_comparisons/in_range.cc: New test.
2006 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
2007 * testsuite/20_util/integer_comparisons/less.cc: New test.
2008 * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
2009 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
2010 * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
2011 * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
2012 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
2013
2014 2020-02-16 Patrick Palka <ppalka@redhat.com>
2015
2016 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
2017 Move code after an early exit constexpr if to under an else branch.
2018 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
2019
2020 2020-02-15 Patrick Palka <ppalka@redhat.com>
2021
2022 * include/bits/ranges_algo.h: Adjust whitespace and formatting.
2023 * include/bits/ranges_algobase.h: Likewise.
2024 * include/bits/ranges_uninitialized.h: Likewise.
2025
2026 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
2027 binary_search, copy_if, count, count_if, equal_range, find, find_end,
2028 find_first_of, find_if, find_if_not, for_each, generate, generate_n,
2029 includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
2030 is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
2031 lower_bound, make_heap, max, max_element, merge, min, min_element,
2032 minmax, minmax_element, mismatch, next_permutation, none_of,
2033 nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
2034 partition_point, pop_heap, prev_permutation, push_heap, remove,
2035 remove_copy, remove_copy_if, remove_if, replace, replace_copy,
2036 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
2037 search, search_n, set_difference, set_intersection,
2038 set_symmetric_difference, set_union, shuffle, sort, sort_heap,
2039 stable_partition, stable_sort, swap_ranges, transform, unique,
2040 unique_copy, upper_bound): Convert into function objects.
2041 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
2042 fill, move_backward, copy_backward): Likewise.
2043 * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
2044 uninitialized_default_construct_n, uninitialized_value_construct,
2045 uninitialized_value_construct_n, uninitialized_copy,
2046 uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
2047 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
2048 destroy, destroy_n): Likewise.
2049
2050 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
2051 (ranges::find_end): ... here.
2052 (ranges::__lexicographical_compare): Fold into ...
2053 (ranges::lexicographical_compare): ... here.
2054 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
2055 (ranges::equal): ... here.
2056
2057 2020-02-15 Jonathan Wakely <jwakely@redhat.com>
2058
2059 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
2060 * include/std/deque: Likewise.
2061 * include/std/forward_list: Likewise.
2062 * include/std/list: Likewise.
2063 * include/std/string: Likewise.
2064 * include/std/vector: Likewise.
2065 * include/std/version: Likewise.
2066 * testsuite/23_containers/deque/erasure.cc: Test for new value.
2067 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
2068 * testsuite/23_containers/list/erasure.cc: Likewise.
2069 * testsuite/23_containers/map/erasure.cc: Likewise.
2070 * testsuite/23_containers/set/erasure.cc: Likewise.
2071 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
2072 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
2073 * testsuite/23_containers/vector/erasure.cc: Likewise.
2074
2075 2020-02-15 Jonathan Wakely <jwakely@redhat.com>
2076
2077 * include/bits/random.h (uniform_random_bit_generator): Require min()
2078 and max() to be constant expressions and min() to be less than max().
2079 * testsuite/26_numerics/random/concept.cc: Check additional cases.
2080 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
2081
2082 2020-02-13 Patrick Palka <ppalka@redhat.com>
2083
2084 * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
2085 * include/Makefile.in: Regenerate.
2086 * include/bits/ranges_uninitialized.h: New header.
2087 * include/std/memory: Include it.
2088 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
2089 test.
2090 * .../uninitialized_copy/constrained.cc: New test.
2091 * .../uninitialized_default_construct/constrained.cc: New test.
2092 * .../uninitialized_fill/constrained.cc: New test.
2093 * .../uninitialized_move/constrained.cc: New test.
2094 * .../uninitialized_value_construct/constrained.cc: New test.
2095
2096 * include/Makefile.am: Add bits/ranges_algobase.h
2097 * include/Makefile.in: Regenerate.
2098 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
2099 existing #includes.
2100 (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
2101 __detail::__is_move_iterator, copy_result, move_result,
2102 __equal, equal, copy_result, move_result, move_backward_result,
2103 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
2104 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
2105 fill): Split out into ...
2106 * bits/range_algobase.h: ... this new header.
2107
2108 2020-02-12 Patrick Palka <ppalka@redhat.com>
2109
2110 LWG 3389 and LWG 3390
2111 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
2112 constructing the move_iterator with __i.
2113 (counted_iterator::counted_iterator): Use std::move when initializing
2114 M_current with __i.
2115 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
2116 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
2117
2118 2020-02-12 Sandra Loosemore <sandra@codesourcery.com>
2119
2120 PR libstdc++/79193
2121 PR libstdc++/88999
2122
2123 * configure: Regenerated.
2124
2125 2020-02-12 François Dumont <fdumont@gcc.gnu.org>
2126
2127 * include/bits/hashtable.h
2128 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
2129 missing std namespace qualification to forward call.
2130
2131 2020-02-09 Jonathan Wakely <jwakely@redhat.com>
2132
2133 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
2134 comment.
2135 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
2136
2137 * include/std/ranges: Fix non-ASCII characters in comment.
2138
2139 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
2140 equality comparison to be valid and return bool.
2141 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
2142 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
2143 type with ambiguous conversion to fundamental types.
2144 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
2145
2146 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
2147
2148 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
2149 Use remove_cvref_t.
2150 (readable_traits): Rename to indirectly_readable_traits.
2151 (readable): Rename to indirectly_readable.
2152 (writable): Rename to indirectly_writable.
2153 (__detail::__iter_exchange_move): Do not use remove_reference_t.
2154 (indirectly_swappable): Adjust requires expression parameter types.
2155 expression.
2156 * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
2157 (ranges::replace_if, ranges::generate_n, ranges::generate)
2158 (ranges::remove): Use new name for writable.
2159 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
2160 Use new name for readable.
2161 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
2162 new name for readable_traits.
2163 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
2164 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
2165 new definition of indirectly_readable.
2166
2167 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
2168 to take parameters of common_iterator, instead of the common_iterator
2169 type itself. Fix argument for __common_iter_has_arrow constraint.
2170 (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
2171
2172 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
2173
2174 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
2175 warning.
2176 (basic_istream_view::_Iterator::operator++()): Add missing return.
2177
2178 2020-02-07 Patrick Palka <ppalka@redhat.com>
2179
2180 * include/bits/ranges_algo.h: Remove extraneous &&.
2181
2182 * include/std/ranges (ranges::__detail::__stream_extractable,
2183 ranges::basic_istream_view, ranges::istream_view): Define.
2184 * testsuite/std/ranges/istream_view: New test.
2185
2186 Implement C++20 range adaptors
2187 * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
2188 (subrange::_S_store_size): Mark as const instead of constexpr to
2189 avoid what seems to be a bug in GCC.
2190 (__detail::__box): Give it defaulted copy and move constructors.
2191 (ranges::views::_Single::operator()): Mark constexpr.
2192 (ranges::views::_Iota::operator()): Mark constexpr.
2193 (__detail::Empty): Define.
2194 (ranges::views::__closure::_RangeAdaptor,
2195 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
2196 ranges::views::all, ranges::__detail::find_if,
2197 ranges::__detail::find_if_not, ranges::__detail::mismatch,
2198 ranges::detail::min, filter_view, ranges::views::filter, transform_view,
2199 ranges::views::transform, take_view, ranges::views::take,
2200 take_while_view, ranges::views::take_while, drop_view,
2201 ranges::views::drop, join_view, ranges::views::join,
2202 __detail::require_constant, __detail::tiny_range, split_view,
2203 ranges::views::split, ranges::views::_Counted, ranges::views::counted,
2204 common_view, ranges::views::common, reverse_view,
2205 ranges::views::reverse,
2206 ranges::views::__detail::__is_reversible_subrange,
2207 ranges::views::__detail::__is_reverse_view, reverse_view,
2208 ranges::views::reverse, __detail::__has_tuple_element, elements_view,
2209 ranges::views::elements, ranges::views::keys, ranges::views::values):
2210 Define.
2211 (views): Alias for ranges::views.
2212 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
2213 tuple_element<1, ranges::subrange>): New partial specializations.
2214 * testsuite/std/ranges/adaptors/all.cc: New test.
2215 * testsuite/std/ranges/adaptors/common.cc: Likewise.
2216 * testsuite/std/ranges/adaptors/counted.cc: Likewise.
2217 * testsuite/std/ranges/adaptors/drop.cc: Likewise.
2218 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
2219 * testsuite/std/ranges/adaptors/elements.cc: Likewise.
2220 * testsuite/std/ranges/adaptors/filter.cc: Likewise.
2221 * testsuite/std/ranges/adaptors/join.cc: Likewise.
2222 * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
2223 * testsuite/std/ranges/adaptors/split.cc: Likewise.
2224 * testsuite/std/ranges/adaptors/take.cc: Likewise.
2225 * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
2226 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
2227
2228 2020-02-07 Jonathan Wakely <jwakely@redhat.com>
2229
2230 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
2231 type of enumerations and comparison category types.
2232 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
2233 (__cmp_cat::_Ncmp::unordered): Change value to 2.
2234 (partial_ordering::_M_value, weak_ordering::_M_value)
2235 (strong_ordering::_M_value): Change type to __cmp_cat::type.
2236 (partial_ordering::_M_is_ordered): Remove data member.
2237 (partial_ordering): Use second bit of _M_value for unordered. Adjust
2238 comparison operators.
2239 (weak_ordering::operator partial_ordering): Simplify to remove
2240 branches.
2241 (operator<=>(unspecified, weak_ordering)): Likewise.
2242 (strong_ordering::operator partial_ordering): Likewise.
2243 (strong_ordering::operator weak_ordering): Likewise.
2244 (operator<=>(unspecified, strong_ordering)): Likewise.
2245 * testsuite/18_support/comparisons/categories/partialord.cc: New test.
2246 * testsuite/18_support/comparisons/categories/strongord.cc: New test.
2247 * testsuite/18_support/comparisons/categories/weakord.cc: New test.
2248
2249 * include/std/ranges (iota_view::_Iterator): Fix typo in name of
2250 __cpp_lib_three_way_comparison macro and use deduced return type for
2251 operator<=>.
2252 * testsuite/std/ranges/iota/iterator.cc: New test.
2253
2254 2020-02-07 Patrick Palka <ppalka@redhat.com>
2255 Jonathan Wakely <jwakely@redhat.com>
2256
2257 Implement C++20 constrained algorithms
2258 * include/Makefile.am: Add new header.
2259 * include/Makefile.in: Regenerate.
2260 * include/std/algorithm: Include <bits/ranges_algo.h>.
2261 * include/bits/ranges_algo.h: New file.
2262 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
2263 * testsuite/25_algorithms/all_of/constrained.cc: New test.
2264 * testsuite/25_algorithms/any_of/constrained.cc: New test.
2265 * testsuite/25_algorithms/binary_search/constrained.cc: New test.
2266 * testsuite/25_algorithms/copy/constrained.cc: New test.
2267 * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
2268 * testsuite/25_algorithms/copy_if/constrained.cc: New test.
2269 * testsuite/25_algorithms/copy_n/constrained.cc: New test.
2270 * testsuite/25_algorithms/count/constrained.cc: New test.
2271 * testsuite/25_algorithms/count_if/constrained.cc: New test.
2272 * testsuite/25_algorithms/equal/constrained.cc: New test.
2273 * testsuite/25_algorithms/equal_range/constrained.cc: New test.
2274 * testsuite/25_algorithms/fill/constrained.cc: New test.
2275 * testsuite/25_algorithms/fill_n/constrained.cc: New test.
2276 * testsuite/25_algorithms/find/constrained.cc: New test.
2277 * testsuite/25_algorithms/find_end/constrained.cc: New test.
2278 * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
2279 * testsuite/25_algorithms/find_if/constrained.cc: New test.
2280 * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
2281 * testsuite/25_algorithms/for_each/constrained.cc: New test.
2282 * testsuite/25_algorithms/generate/constrained.cc: New test.
2283 * testsuite/25_algorithms/generate_n/constrained.cc: New test.
2284 * testsuite/25_algorithms/heap/constrained.cc: New test.
2285 * testsuite/25_algorithms/includes/constrained.cc: New test.
2286 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
2287 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
2288 * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
2289 * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
2290 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
2291 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
2292 test.
2293 * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
2294 * testsuite/25_algorithms/max/constrained.cc: New test.
2295 * testsuite/25_algorithms/max_element/constrained.cc: New test.
2296 * testsuite/25_algorithms/merge/constrained.cc: New test.
2297 * testsuite/25_algorithms/min/constrained.cc: New test.
2298 * testsuite/25_algorithms/min_element/constrained.cc: New test.
2299 * testsuite/25_algorithms/minmax/constrained.cc: New test.
2300 * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
2301 * testsuite/25_algorithms/mismatch/constrained.cc: New test.
2302 * testsuite/25_algorithms/move/constrained.cc: New test.
2303 * testsuite/25_algorithms/move_backward/constrained.cc: New test.
2304 * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
2305 * testsuite/25_algorithms/none_of/constrained.cc: New test.
2306 * testsuite/25_algorithms/nth_element/constrained.cc: New test.
2307 * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
2308 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
2309 * testsuite/25_algorithms/partition/constrained.cc: New test.
2310 * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
2311 * testsuite/25_algorithms/partition_point/constrained.cc: New test.
2312 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
2313 * testsuite/25_algorithms/remove/constrained.cc: New test.
2314 * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
2315 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
2316 * testsuite/25_algorithms/remove_if/constrained.cc: New test.
2317 * testsuite/25_algorithms/replace/constrained.cc: New test.
2318 * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
2319 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
2320 * testsuite/25_algorithms/replace_if/constrained.cc: New test.
2321 * testsuite/25_algorithms/reverse/constrained.cc: New test.
2322 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
2323 * testsuite/25_algorithms/rotate/constrained.cc: New test.
2324 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
2325 * testsuite/25_algorithms/search/constrained.cc: New test.
2326 * testsuite/25_algorithms/search_n/constrained.cc: New test.
2327 * testsuite/25_algorithms/set_difference/constrained.cc: New test.
2328 * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
2329 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
2330 test.
2331 * testsuite/25_algorithms/set_union/constrained.cc: New test.
2332 * testsuite/25_algorithms/shuffle/constrained.cc: New test.
2333 * testsuite/25_algorithms/sort/constrained.cc: New test.
2334 * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
2335 * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
2336 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
2337 * testsuite/25_algorithms/transform/constrained.cc: New test.
2338 * testsuite/25_algorithms/unique/constrained.cc: New test.
2339 * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
2340 * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
2341
2342 2020-02-06 Jonathan Wakely <jwakely@redhat.com>
2343
2344 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
2345 number in comment. Fix indentation.
2346
2347 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
2348 redundant _GLIBCXX20_CONSTEXPR.
2349
2350 * include/std/ranges (viewable_range): Replace decay_t with
2351 remove_cvref_t (LWG 3375).
2352
2353 2020-02-05 Jonathan Wakely <jwakely@redhat.com>
2354
2355 * include/bits/iterator_concepts.h (iter_reference_t)
2356 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
2357 Remove workarounds for PR c++/67704.
2358 * testsuite/24_iterators/aliases.cc: New test.
2359
2360 2020-02-05 Patrick Palka <ppalka@redhat.com>
2361
2362 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
2363 when initializing _M_current.
2364 (move_iterator::base): Split into two overloads differing in
2365 ref-qualifiers as in P1207R4 for C++20.
2366
2367 2020-02-04 Jonathan Wakely <jwakely@redhat.com>
2368
2369 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
2370 use.
2371
2372 PR libstdc++/93562
2373 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
2374 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
2375 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
2376
2377 2020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
2378
2379 * configure: Regenerate.
2380
2381 2020-01-31 Patrick Palka <ppalka@redhat.com>
2382
2383 * testsuite/24_iterators/range_operations/distance.cc: Do not assume
2384 test_range::end() returns the same type as test_range::begin().
2385 * testsuite/24_iterators/range_operations/next.cc: Likewise.
2386 * testsuite/24_iterators/range_operations/prev.cc: Likewise.
2387 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
2388 Always return a sentinel<I>.
2389
2390 2020-01-29 Jonathan Wakely <jwakely@redhat.com>
2391
2392 PR libstdc++/92895
2393 * include/std/stop_token (stop_token::stop_possible()): Call new
2394 _M_stop_possible() function.
2395 (stop_token::stop_requested()): Do not use stop_possible().
2396 (stop_token::binary_semaphore): New class, as temporary stand-in for
2397 std::binary_semaphore.
2398 (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
2399 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
2400 New data members for symchronization with stop_callback destruction.
2401 (stop_token::_Stop_cb::_Stop_cb): Make non-template.
2402 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
2403 Remove.
2404 (stop_token::_Stop_cb::_M_run): New member function.
2405 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
2406 Remove.
2407 (stop_token::_Stop_state::_M_owners): New data member to track
2408 reference count for ownership.
2409 (stop_token::_Stop_state::_M_value): New data member combining a
2410 spinlock, the stop requested flag, and the reference count for
2411 associated stop_source objects.
2412 (stop_token::_Stop_state::_M_requester): New data member for
2413 synchronization with stop_callback destruction.
2414 (stop_token::_Stop_state::_M_stop_possible()): New member function.
2415 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
2416 of _M_value.
2417 (stop_token::_Stop_state::_M_add_owner)
2418 (stop_token::_Stop_state::_M_release_ownership)
2419 (stop_token::_Stop_state::_M_add_ssrc)
2420 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
2421 updating reference counts.
2422 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
2423 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
2424 (stop_token::_Stop_state::_M_try_lock)
2425 (stop_token::_Stop_state::_M_try_lock_and_stop)
2426 (stop_token::_Stop_state::_M_do_try_lock): New member functions for
2427 managing spinlock.
2428 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
2429 read and update state. Release lock while running callbacks. Use new
2430 data members to synchronize with callback destruction.
2431 (stop_token::_Stop_state::_M_remove_callback): Likewise.
2432 (stop_token::_Stop_state::_M_register_callback): Use atomic operations
2433 to read and update state.
2434 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
2435 replacing shared_ptr.
2436 (stop_source::stop_source(const stop_source&)): Update reference count.
2437 (stop_source::operator=(const stop_source&)): Likewise.
2438 (stop_source::~stop_source()): Likewise.
2439 (stop_source::stop_source(stop_source&&)): Define as defaulted.
2440 (stop_source::operator=(stop_source&&)): Establish postcondition on
2441 parameter.
2442 (stop_callback): Enforce preconditions on template parameter. Replace
2443 base class with data member of new _Cb_impl type.
2444 (stop_callback::stop_callback(const stop_token&, Cb&&))
2445 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
2446 (stop_callback::_Cb_impl): New type wrapping _Callback member and
2447 defining the _S_execute member function.
2448 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
2449 test.
2450 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
2451 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
2452 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
2453 New test.
2454 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
2455 test.
2456 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
2457 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
2458 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
2459 test.
2460
2461 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
2462 three_way_comparable_with.
2463 (__detail::__3way_cmp_with): Remove workaround for fixed bug.
2464 (compare_three_way::operator()): Remove redundant constraint from
2465 requires-clause.
2466 (__detail::_Synth3way::operator()): Use three_way_comparable_with
2467 instead of workaround.
2468 * testsuite/18_support/comparisons/object/93479.cc: Prune extra
2469 output due to simplified constraints on compare_three_way::operator().
2470
2471 PR libstdc++/93479
2472 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
2473 * testsuite/18_support/comparisons/object/93479.cc: New test.
2474
2475 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
2476 returns the same type as test_range::begin(). Add comments.
2477 * testsuite/std/ranges/access/rbegin.cc: Likewise.
2478 * testsuite/std/ranges/access/rend.cc: Likewise.
2479 * testsuite/std/ranges/range.cc: Do not assume the sentinel for
2480 test_range is the same as its iterator type.
2481 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
2482 operator- overloads to satisfy sized_sentinel_for when the iterator
2483 satisfies random_access_iterator.
2484
2485 2020-01-28 Jonathan Wakely <jwakely@redhat.com>
2486
2487 PR libstdc++/93470
2488 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
2489 static assertion to object types.
2490
2491 PR libstdc++/93325
2492 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
2493 clock_gettime instead of explicit glibc version check.
2494 * configure: Regenerate.
2495
2496 2020-01-28 Martin Liska <mliska@suse.cz>
2497
2498 PR libstdc++/93478
2499 * include/std/atomic: Fix typo.
2500 * include/std/optional: Likewise.
2501
2502 2020-01-27 Andrew Burgess <andrew.burgess@embecosm.com>
2503
2504 * configure: Regenerate.
2505
2506 2020-01-27 Jonathan Wakely <jwakely@redhat.com>
2507
2508 PR libstdc++/93426
2509 * include/std/span (span): Fix deduction guide.
2510 * testsuite/23_containers/span/deduction.cc: New test.
2511
2512 2020-01-24 Jonathan Wakely <jwakely@redhat.com>
2513
2514 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
2515 (__cmp_cat::_Ord::equivalent): Add enumerator.
2516 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
2517 and greater.
2518 (partial_ordering, weak_ordering, strong_ordering): Remove
2519 constructors taking __cmp_cat::_Eq parameters. Use renamed
2520 enumerators.
2521
2522 2020-01-24 Maciej W. Rozycki <macro@wdc.com>
2523
2524 * acinclude.m4: Handle `--with-toolexeclibdir='.
2525 * Makefile.in: Regenerate.
2526 * aclocal.m4: Regenerate.
2527 * configure: Regenerate.
2528 * doc/Makefile.in: Regenerate.
2529 * include/Makefile.in: Regenerate.
2530 * libsupc++/Makefile.in: Regenerate.
2531 * po/Makefile.in: Regenerate.
2532 * python/Makefile.in: Regenerate.
2533 * src/Makefile.in: Regenerate.
2534 * src/c++11/Makefile.in: Regenerate.
2535 * src/c++17/Makefile.in: Regenerate.
2536 * src/c++98/Makefile.in: Regenerate.
2537 * src/filesystem/Makefile.in: Regenerate.
2538 * testsuite/Makefile.in: Regenerate.
2539
2540 2020-01-23 Alexandre Oliva <oliva@adacore.com>
2541
2542 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
2543 * configure: Rebuild.
2544
2545 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
2546
2547 2020-01-23 Jonathan Wakely <jwakely@redhat.com>
2548
2549 PR libstdc++/91947
2550 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
2551 rule.
2552 * include/Makefile.in: Regenerate.
2553
2554 2020-01-20 Jonathan Wakely <jwakely@redhat.com>
2555
2556 * doc/xml/faq.xml: Fix grammar.
2557 * doc/xml/manual/appendix_contributing.xml: Improve instructions.
2558 * doc/xml/manual/spine.xml: Update copyright years.
2559 * doc/html/*: Regenerate.
2560
2561 2020-01-19 Eric S. Raymond <esr@thyrsus.com>
2562
2563 * doc/xml/faq.xml: Update for SVN -> Git transition.
2564 * doc/xml/manual/appendix_contributing.xml: Likewise.
2565 * doc/xml/manual/status_cxx1998.xml: Likewise.
2566 * doc/xml/manual/status_cxx2011.xml: Likewise.
2567 * doc/xml/manual/status_cxx2014.xml: Likewise.
2568 * doc/xml/manual/status_cxx2017.xml: Likewise.
2569 * doc/xml/manual/status_cxx2020.xml: Likewise.
2570 * doc/xml/manual/status_cxxtr1.xml: Likewise.
2571 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
2572
2573 2020-01-18 Iain Sandoe <iain@sandoe.co.uk>
2574
2575 * include/Makefile.am: Add coroutine to the std set.
2576 * include/Makefile.in: Regenerated.
2577 * include/std/coroutine: New file.
2578
2579 2020-01-17 Jonathan Wakely <jwakely@redhat.com>
2580
2581 PR libstdc++/92376
2582 * include/bits/c++config: Only do PSTL config when the header is
2583 present, to fix freestanding.
2584 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
2585 functions if they were detected by configure.
2586
2587 2020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de>
2588 Matthew Bauer <mjbauer95@gmail.com>
2589 Jonathan Wakely <jwakely@redhat.com>
2590
2591 PR bootstrap/64271 (partial)
2592 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
2593 to unsigned short.
2594 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
2595 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
2596 definitions with NetBSD upstream.
2597 (ctype_base::blank): Use _CTYPE_BL.
2598 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
2599 Declaration.
2600 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
2601 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
2602 parameters to unsigned char.
2603 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
2604
2605 2020-01-16 François Dumont <fdumont@gcc.gnu.org>
2606
2607 PR libstdc++/91263
2608 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
2609 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
2610 (_Equality_base): Remove.
2611 (_Equality<>::_M_equal): Review implementation. Use
2612 std::is_permutation.
2613 * testsuite/23_containers/unordered_multiset/operators/1.cc
2614 (Hash, Equal, test02, test03): New.
2615 * testsuite/23_containers/unordered_set/operators/1.cc
2616 (Hash, Equal, test02, test03): New.
2617
2618 2020-01-15 Jonathan Wakely <jwakely@redhat.com>
2619
2620 PR libstdc++/93267
2621 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
2622 Move here from <bits/range_access.h> and define using __int128 when
2623 available.
2624 (__is_integer_like, __is_signed_integer_like): Move here from
2625 <bits/range_access.h>.
2626 (weakly_incrementable): Use __is_signed_integer_like.
2627 * include/bits/range_access.h (__max_diff_type, __max_size_type)
2628 (__is_integer_like, __is_signed_integer_like): Move to
2629 <bits/iterator_concepts.h>.
2630 (__make_unsigned_like_t): Move here from <ranges>.
2631 * include/std/ranges (__make_unsigned_like_t): Move to
2632 <bits/range_access.h>.
2633 (iota_view): Replace using-directive with using-declarations.
2634 * testsuite/std/ranges/iota/93267.cc: New test.
2635 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
2636
2637 2020-01-13 Jonathan Wakely <jwakely@redhat.com>
2638
2639 PR libstdc++/93244
2640 * include/bits/fs_path.h (path::generic_string<C,A>)
2641 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
2642 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
2643 root-dir is converted to forward slash in generic pathname.
2644 * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
2645 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
2646
2647 PR libstdc++/58605
2648 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
2649 Define.
2650 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
2651 (__atomic_float): Add default member initializer for C++20.
2652 * include/std/atomic (atomic): Likewise.
2653 (atomic::atomic()): Remove noexcept-specifier on default constructor.
2654 * include/std/version (__cpp_lib_atomic_value_initialization): Define.
2655 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
2656 number.
2657 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
2658 * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
2659 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
2660 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
2661 expected result for is_trivially_default_constructible.
2662 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
2663 * testsuite/29_atomics/atomic_float/value_init.cc: New test.
2664 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
2665 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
2666 * testsuite/29_atomics/atomic_integral/cons/value_init.cc
2667 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
2668 expected results for is_trivially_default_constructible.
2669 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
2670 new test generator.
2671
2672 2020-01-10 Jonathan Wakely <jwakely@redhat.com>
2673
2674 * testsuite/util/testsuite_iterators.h: Improve comment.
2675
2676 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
2677 initialization syntax.
2678
2679 PR libstdc++/92285
2680 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
2681 of base class independent of __cplusplus value.
2682 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
2683 type defined in the base class
2684 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
2685 * testsuite/24_iterators/istreambuf_iterator/requirements/
2686 base_classes.cc: Adjust expected base class for C++98.
2687
2688 2020-01-09 Olivier Hainque <hainque@adacore.com>
2689
2690 * doc/xml/manual/appendix_contributing.xml: Document _C2
2691 as a reserved identifier, by VxWorks.
2692 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
2693 * include/bits/stl_multimap.h: Likewise.
2694
2695 2020-01-09 Jonathan Wakely <jwakely@redhat.com>
2696
2697 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
2698 (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
2699 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
2700 partial specialization to disambiguate the two constrained
2701 specializations.
2702
2703 * include/experimental/type_traits (experimental::is_pod_v): Disable
2704 -Wdeprecated-declarations warnings around reference to std::is_pod.
2705 * include/std/type_traits (is_pod_v): Likewise.
2706 * testsuite/18_support/max_align_t/requirements/2.cc: Also check
2707 is_standard_layout and is_trivial. Do not check is_pod for C++20.
2708 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
2709 Add -Wno-deprecated for C++20.
2710 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
2711 * testsuite/20_util/is_pod/value.cc: Likewise.
2712 * testsuite/experimental/type_traits/value.cc: Likewise.
2713
2714 2020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
2715
2716 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
2717 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
2718 * testuite/20_util/is_pod/deprecated-2a.cc: New test.
2719
2720 2020-01-09 Jonathan Wakely <jwakely@redhat.com>
2721
2722 PR libstdc++/93205
2723 * include/bits/random.h (operator>>): Check stream operation succeeds.
2724 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
2725 typedefs.
2726 (operator>>): Remove redundant __istream_type typedefs. Check stream
2727 operations succeed.
2728 (__extract_params): New function to fill a vector from a stream.
2729 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
2730
2731 PR libstdc++/93208
2732 * config/abi/pre/gnu.ver: Add new exports.
2733 * include/std/memory_resource (memory_resource::~memory_resource()):
2734 Do not define inline.
2735 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
2736 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
2737 Define.
2738 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
2739 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
2740
2741 2020-01-09 François Dumont <fdumont@gcc.gnu.org>
2742
2743 PR libstdc++/92124
2744 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
2745 template alias.
2746 (_Hashtable<>::__fwd_value_for): New.
2747 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
2748 parameter.
2749 (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
2750 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
2751 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
2752 with std::move.
2753 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
2754 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
2755 Adapt.
2756 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
2757 Adapt.
2758 * testsuite/23_containers/unordered_set/92124.cc: New.
2759
2760 2020-01-08 Jonathan Wakely <jwakely@redhat.com>
2761
2762 PR libstdc++/93201
2763 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
2764 detailed error reporting for remove_all. Check result of recursive
2765 call before incrementing iterator.
2766 (remove_all(const path&), remove_all(const path&, error_code&)): Use
2767 do_remove_all.
2768 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
2769 result of recursive call before incrementing iterator.
2770 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
2771 are reported correctly.
2772 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
2773
2774 2020-01-07 Thomas Rodgers <trodgers@redhat.com>
2775
2776 * include/std/condition_variable
2777 (condition_variable_any::wait_on): Rename to match current draft
2778 standard.
2779 (condition_variable_any::wait_on_until): Likewise.
2780 (condition_variable_any::wait_on_for): Likewise.
2781 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
2782 Adjust tests to account for renamed methods.
2783
2784 2020-01-07 François Dumont <fdumont@gcc.gnu.org>
2785
2786 PR libstdc++/92124
2787 * include/bits/stl_tree.h
2788 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
2789 std::move_if_noexcept by std::move.
2790 * testsuite/23_containers/map/92124.cc: New.
2791 * testsuite/23_containers/set/92124.cc: New.
2792
2793 2020-01-06 Jonathan Wakely <jwakely@redhat.com>
2794
2795 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
2796 (stop_source): Likewise (LWG 3362).
2797 * testsuite/30_threads/stop_token/stop_source.cc: Test equality
2798 comparisons.
2799
2800 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
2801 (lexicographical_compare_three_way): Do not depend on
2802 __cpp_lib_concepts.
2803 * include/std/version (__cpp_lib_three_way_comparison): Only define
2804 when __cpp_lib_concepts is defined.
2805 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
2806
2807 2020-01-03 Jonathan Wakely <jwakely@redhat.com>
2808
2809 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
2810 Only define four-argument overload when __cpp_lib_concepts is defined.
2811
2812 2020-01-01 John David Anglin <danglin@gcc.gnu.org>
2813
2814 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
2815
2816 2020-01-01 Jakub Jelinek <jakub@redhat.com>
2817
2818 Update copyright years.
2819 \f
2820 Copyright (C) 2020 Free Software Foundation, Inc.
2821
2822 Copying and distribution of this file, with or without modification,
2823 are permitted in any medium without royalty provided the copyright
2824 notice and this notice are preserved.