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