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