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