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