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