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