]> gcc.gnu.org Git - gcc.git/blame - libstdc++-v3/ChangeLog
libstdc++: Fix tests that fail in C++20 mode
[gcc.git] / libstdc++-v3 / ChangeLog
CommitLineData
93843da6
JW
12020-04-20 Jonathan Wakely <jwakely@redhat.com>
2
0ea89b15
JW
3 * testsuite/20_util/is_constructible/51185.cc: Make test class a
4 non-aggregate so that the test verifies the same thing in all -std
5 modes.
6 * testsuite/20_util/is_constructible/value-2.cc: Adjust expected
7 results for some types when paren-init for aggregates is supported.
8
73a0a21d
JW
9 * include/std/version (__cpp_lib_three_way_comparison): Update value.
10 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
b0146791 11 (__detail::__synth3way): Add noexcept-specifier.
73a0a21d 12
93843da6
JW
13 * include/bits/stl_map.h (map): Define operator<=> and remove
14 operator< for C++20.
15 * include/bits/stl_multimap.h (multimap): Likewise.
16 * include/bits/stl_multiset.h (multiset): Likewise.
17 * include/bits/stl_set.h (set): Likewise.
18 * include/bits/stl_tree.h (_Rb_tree): Likewise.
19 (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
20 operator!= for C++20.
21 * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
22 * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
23 * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
24 * include/debug/set.h (__gnu_debug::set): Likewise.
25 * testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
26 * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
27 * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
28 * testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
29
697b94cf
MK
302020-04-20 Matthias Kretz <kretz@kde.org>
31
32 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
33
a2c0fa35
JW
342020-04-19 Jonathan Wakely <jwakely@redhat.com>
35
717e91db
JW
36 * include/bits/stl_queue.h (queue): Define operator<=> for C++20.
37 * include/bits/stl_stack.h (stack): Likewise.
38 * testsuite/23_containers/queue/cmp_c++20.cc: New test.
39 * testsuite/23_containers/stack/cmp_c++20.cc: New test.
40
7ab9c243
JW
41 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
42 Remove redundant operator!= for C++20.
43 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
44 Likewise.
45 * include/debug/unordered_map (unordered_map, unordered_multimap):
46 Likewise.
47 * include/debug/unordered_set (unordered_set, unordered_multiset):
48 Likewise.
49
a2c0fa35
JW
50 PR other/94629
51 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix
52 redundant assignment in constructor.
53
c9960294
JW
542020-04-18 Jonathan Wakely <jwakely@redhat.com>
55
27c17177
JW
56 * include/std/chrono (duration, time_point): Define operator<=> and
57 remove redundant operator!= for C++20.
58 * testsuite/20_util/duration/comparison_operators/three_way.cc: New
59 test.
60 * testsuite/20_util/time_point/comparison_operators/three_way.cc: New
61 test.
62
c9960294
JW
63 * testsuite/util/native_type/native_priority_queue.hpp: Use
64 allocator_traits to rebind allocator.
65
875d6cb3
JW
662020-04-17 Jonathan Wakely <jwakely@redhat.com>
67
bd2420f8
JW
68 * include/bits/forward_list.h (forward_list): Define operator<=> and
69 remove redundant comparison operators for C++20.
70 * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
71 * include/bits/stl_deque.h (deque): Likewise.
72 * include/bits/stl_iterator.h (__normal_iterator): Likewise.
73 * include/bits/stl_list.h (list): Likewise.
74 * include/bits/stl_vector.h (vector): Likewise.
75 * include/debug/deque (__gnu_debug::deque): Likewise.
76 * include/debug/forward_list (__gnu_debug::forward_list): Likewise.
77 * include/debug/list (__gnu_debug::list): Likewise.
78 * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
79 Likewise.
80 * include/debug/vector (__gnu_debug::vector): Likewise.
81 * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
82 operator<=> for C++20.
83 * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
84 * testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
85 * testsuite/23_containers/list/cmp_c++20.cc: New test.
86 * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
87 * testsuite/23_containers/vector/cmp_c++20.cc: New test.
88
875d6cb3
JW
89 * include/bits/basic_string.h (basic_string): Define operator<=> and
90 remove redundant comparison operators for C++20.
91 * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
92 Add comparison_category members.
93 (__detail::__char_traits_cmp_cat): New helper to get comparison
94 category from char traits class.
95 * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
96 define for C++20.
97 (sub_match): Define operator<=> and remove redundant comparison
98 operators for C++20.
99 (match_results): Remove redundant operator!= for C++20.
100 * include/std/string_view (basic_string_view): Define operator<=> and
101 remove redundant comparison operators for C++20.
102 * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
103 test.
104 * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
105 New test.
106 * testsuite/21_strings/basic_string_view/operations/copy/char/
107 constexpr.cc: Initialize variable.
108 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
109 constexpr.cc: Likewise.
110 * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
111 dg-do directive and remove comments showing incorrect signatures.
112 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
113 Likewise.
114 * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
115 New test.
116 * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
117 New test.
118 * testsuite/28_regex/sub_match/compare_c++20.cc: New test.
119
c8d88bf2
JW
1202020-04-16 Jonathan Wakely <jwakely@redhat.com>
121
122 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
123 name of unused parameter.
124
4714fd14
JW
1252020-04-15 Jonathan Wakely <jwakely@redhat.com>
126
d43919bf
JW
127 * include/bits/fs_dir.h (file_status): Define operator== for C++20.
128 (directory_entry): Define operator<=> and remove redundant comparison
129 operators for C++20.
130 * include/bits/fs_fwd.h (space_info): Define operator== for C++20.
131 * include/bits/fs_path.h (path): Define operator<=> and remove
132 redundant comparison operators for C++20.
133 * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
134 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
135 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
136 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
137
596676d6
JW
138 * include/bits/allocator.h (operator!=): Do not define for C++20.
139 * include/bits/locale_classes.h (operator!=): Likewise.
140 * include/bits/std_function.h (operator==(nullptr_t, const function&))
141 (operator!=(const function&, nullptr_t))
142 (operator!=(nullptr_t, const function&)): Likewise.
143 * include/ext/bitmap_allocator.h (operator!=): Likewise.
144 * include/ext/debug_allocator.h (operator!=): Likewise.
145 * include/ext/extptr_allocator.h (operator!=): Likewise.
146 * include/ext/malloc_allocator.h (operator!=): Likewise.
147 * include/ext/mt_allocator.h (operator!=): Likewise.
148 * include/ext/new_allocator.h (operator!=): Likewise.
149 * include/ext/pool_allocator.h (operator!=): Likewise.
150 * include/ext/throw_allocator.h (operator!=): Likewise.
151 * include/std/bitset (bitset::operator!=): Likewise.
152 * include/std/memory_resource (operator!=): Likewise.
153 * include/std/scoped_allocator (operator!=): Likewise.
154
4714fd14
JW
155 * include/std/typeindex (operator<=>): Define for C++20.
156 * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
157
597601aa
JW
1582020-04-14 Jonathan Wakely <jwakely@redhat.com>
159
e1e9e8d7
JW
160 * libsupc++/compare (compare_three_way): Fix constraint so that
161 BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
162 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
163 New test.
164
f5fa62ed
JW
165 PR libstdc++/94562
166 * include/bits/shared_ptr.h (operator<=>): Define for C++20.
167 * include/bits/shared_ptr_base.h (operator<=>): Likewise.
168 * include/bits/unique_ptr.h (operator<=>): Add inline specifier.
169 * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
170 * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
171 std::less<A*> to be used when comparing std::shared_ptr<A> objects in
172 C++20.
173
597601aa
JW
174 PR libstdc++/94565
175 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
176 * testsuite/18_support/comparisons/categories/94565.cc: New test.
177
fa9a57ed
JW
1782020-04-13 Iain Sandoe <iain@sandoe.co.uk>
179
180 * include/std/coroutine: Update coroutines builtin define,
181 per n4861.
182
5b074864
JW
1832020-04-09 Jonathan Wakely <jwakely@redhat.com>
184
3fd1c229
JW
185 * libsupc++/compare (compare_three_way): Fix noexcept-specifier.
186 (strong_order, weak_order, partial_order): Replace uses of <=> with
187 compare_three_way function object (LWG 3324).
188 * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
189 equality operator so that X satisfies three_way_comparable.
190 * testsuite/18_support/comparisons/algorithms/strong_order.cc:
191 Likewise.
192 * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
193
5b074864
JW
194 * include/bits/unique_ptr.h (operator<=>): Define for C++20.
195 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
196 * testsuite/20_util/default_delete/void_neg.cc: Likewise.
197 * testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
198 * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
199
e18cd376
JW
2002020-04-08 Jonathan Wakely <jwakely@redhat.com>
201
ef389dad
JW
202 * include/bits/slice_array.h (operator==(const slice&, const slice&)):
203 Define for C++20.
204 * include/std/complex (operator==(const T&, const complex<T>&))
205 (operator!=(const complex<T>&, const complex<T>&))
206 (operator!=(const complex<T>&, const T&))
207 (operator!=(const T&, const complex<T>&)): Do not declare for C++20.
208 * testsuite/26_numerics/slice/compare.cc: New test.
209
e18cd376
JW
210 * include/std/charconv (to_chars_result, from_chars_result): Add
211 defaulted equality comparisons for C++20.
212 * testsuite/20_util/from_chars/compare.cc: New test.
213 * testsuite/20_util/to_chars/compare.cc: New test.
214
c104e8f1
JW
2152020-04-07 Jonathan Wakely <jwakely@redhat.com>
216
217 PR libstdc++/94520
218 * include/std/charconv (__integer_to_chars_result_type)
219 (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
220 allow use in C++14.
221 * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
222 use of std::string_view with std::string.
223 * testsuite/20_util/from_chars/2.cc: Likewise.
224 * testsuite/20_util/to_chars/1.cc: Likewise.
225 * testsuite/20_util/to_chars/2.cc: Likewise.
226
b6966987
JW
2272020-04-06 Jonathan Wakely <jwakely@redhat.com>
228
229 PR libstdc++/94498
230 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
231 usable in constant expressions for C++20.
232 (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
233 _GLIBCXX20_CONSTEXPR.
234 (std::char_traits<char>, std::char_traits<wchar_t>)
235 (std::char_traits<char8_t>): Make move, copy and assign usable in
236 constant expressions for C++20.
237 (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
238 and copy usable in constant expressions for C++20.
239 * include/std/string_view (basic_string_view::copy): Add
240 _GLIBCXX20_CONSTEXPR.
241 * testsuite/21_strings/basic_string_view/operations/copy/char/
242 constexpr.cc: New test.
243 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
244 constexpr.cc: New test.
245
2a1a0c8c
GP
2462020-04-05 Gerald Pfeifer <gerald@pfeifer.com>
247
248 * doc/xml/manual/appendix_contributing.xml: Refer to Git
249 documentation instead of Subversion. Switch to https.
250 * doc/html/manual/appendix_contributing.html: Regenerate.
251
24fe8c8e
JW
2522020-04-03 Jonathan Wakely <jwakely@redhat.com>
253
254 PR libstdc++/93960
255 * include/bits/ptr_traits.h (__to_address): Add special case for debug
256 iterators, to avoid dereferenceable check.
257 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
258 * testsuite/20_util/to_address/debug.cc: New test.
259
c1effaa2
AC
2602020-04-01 Andrea Corallo <andrea.corallo@arm.com>
261
262 * testsuite/experimental/net/execution_context/use_service.cc:
263 Require pthread and gthreads.
264
6c557ba5
GP
2652020-04-01 Gerald Pfeifer <gerald@pfeifer.com>
266
267 * doc/xml/manual/appendix_free.xml: Move "free books" list from
268 fsf.org to gnu.org.
269 * doc/html/manual/appendix_free.html: Regenerate.
270
e06cde87
VV
2712020-03-31 Ville Voutilainen <ville.voutilainen@gmail.com>
272
273 Library-side tests for parenthesized aggregate init
274
275 PR c++/92878
276 PR c++/92947
277
278 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
279 * testsuite/20_util/any/assign/92878_92947.cc: Likewise.
280 * testsuite/20_util/any/cons/92878_92947.cc: Likewise.
281 * testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
282 * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
283 * testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
284 * testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
285 * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
286 * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
287 Likewise.
288 * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
289 * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
290 * testsuite/20_util/variant/92878_92947.cc: Likewise.
291 * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
292 Likewise.
293 * testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
294 Likewise.
295 * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
296 Likewise.
297 * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
298 Likewise.
299 * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
300 Likewise.
301 * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
302 Likewise.
303 * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
304 * testsuite/23_containers/queue/92878_92947.cc: Likewise.
305 * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
306 Likewise.
307 * testsuite/23_containers/stack/92878_92947.cc: Likewise.
308 * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
309 Likewise.
310 * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
311 Likewise.
312 * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
313 Likewise.
314 * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
315 Likewise.
316 * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
317 Likewise.
318
42cda3ba
JW
3192020-03-28 Jonathan Wakely <jwakely@redhat.com>
320
f6b2b790
JW
321 * testsuite/20_util/is_constructible/value-2.cc: Fix test to account
322 for changes due to parenthesized aggregate-initialization in C++20.
323 * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
324 with std::chrono::sys_time in C++20.
325
42cda3ba
JW
326 * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
327 to constrain C++20 versions of comparison operators. Fix backwards
328 logic of relational operators.
329 (move_iterator): Use requires-clause to constrain comparison operators
330 in C++20. Do not declare non-standard same-type overloads for C++20.
331 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
332 of comparisons and check using greedy_ops type.
333 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
334 * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
335 main function from compile-only test.
336 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
337
0302a2de
JW
3382020-03-27 Jonathan Wakely <jwakely@redhat.com>
339
b8a28a06
JW
340 * include/bits/range_cmp.h (__cpp_lib_ranges): Define.
341 * include/bits/stl_iterator.h: Check value of __cpp_concepts so that
342 C++20 concepts are required.
343 * include/bits/stl_iterator_base_types.h: Likewise.
344 * include/std/concepts: Likewise.
345 * include/std/version: Likewise.
346 * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
347 macro.
348
81a8d137
JW
349 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
350 (reverse_iterator::iterator_category): Define for C++20.
351 (reverse_iterator): Define comparison operators correctly for C++20.
352 (__normal_iterator): Add constraints to comparison operators for C++20.
353 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
354 overload for input iterators.
355 (move_iterator): Add constraints to comparison operators for C++20.
356 Define operator<=> for C++20.
357 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
358 * testsuite/24_iterators/move_iterator/move_only.cc: New test.
359 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
360 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
361
ae6076b5
JW
362 * include/bits/iterator_concepts.h (__detail::__decay_copy)
363 (__detail::__member_begin, __detail::__adl_begin): Move here from
364 <bits/range_access.h>.
365 (__detail::__ranges_begin, __detail::__range_iter_t): Define.
366 * bits/range_access.h (__cust_access::__decay_copy)
367 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to
368 <bits/iterator_concepts.h>.
369 (ranges::iterator_t): Use __detail::__range_iter_t.
370 * include/bits/stl_iterator.h (back_insert_iterator): Simplify
371 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
372 (front_insert_iterator): Likewise.
373 (insert_iterator): Implement changes from P0896R4 for C++20.
374 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
375 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
376 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
377 for inclusion in synopsis_c++20.cc which expects different signatures
378 for some function templates.
379 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
380
0302a2de
JW
381 * include/std/type_traits (__is_array_convertible): Move definition
382 to immediately after is_convertible.
383
16948c54
JW
3842020-03-26 Jonathan Wakely <jwakely@redhat.com>
385
386 * include/std/chrono (chrono::days, chrono::weeks, chrono::years)
387 (chrono::months, chrono::sys_days, chrono::local_t)
388 (chrono::local_time, chrono::local_seconds, chrono::local_days):
389 Define for C++20.
390 (chrono::time_point): Add missing static assert.
391 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
392 * testsuite/std/time/clock/file/overview.cc: New test.
393 * testsuite/std/time/clock/file/members.cc: New test.
394 * testsuite/std/time/syn_c++20.cc: New test.
395
9673d11e 3962020-03-25 Mike Crowe <mac@mcrowe.com>
bf1fc37b 397
e3ef3719
JW
398 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
399 test.
400 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
401 test.
402
9673d11e
JW
4032020-03-25 Jonathan Wakely <jwakely@redhat.com>
404
bf1fc37b
JW
405 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
406 * include/std/chrono (filesystem::__file_clock): Here.
407 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
408 Define public member functions for C++20.
409 (is_clock, is_clock_v): Define traits for C++20.
410 * include/std/condition_variable (condition_variable::wait_until): Add
411 check for valid clock.
412 * include/std/future (_State_baseV2::wait_until): Likewise.
413 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
414 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
415 Likewise.
416 * include/std/thread (this_thread::sleep_until): Likewise.
417 * testsuite/30_threads/condition_variable/members/2.cc: Qualify
418 slow_clock with new namespace.
419 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New
420 test.
421 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
422 New test.
423 * testsuite/30_threads/future/members/clock_neg.cc: New test.
424 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
425 Qualify slow_clock with new namespace.
426 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/
427 clock_neg.cc: New test.
428 * testsuite/30_threads/shared_future/members/clock_neg.cc: New
429 test.
430 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
431 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
432 New test.
433 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
434 slow_clock with new namespace.
435 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
436 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
437 test.
438 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
439 * testsuite/std/time/traits/is_clock.cc: New test.
440 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
441 namespace.
442
9fc98511
JW
4432020-03-21 Jonathan Wakely <jwakely@redhat.com>
444
a577c0c2
JW
445 PR libstdc++/93245
446 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
447 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
448 Improve test coverage.
449
9fc98511
JW
450 PR libstdc++/94242
451 * include/bits/fs_path.h (path::_S_str_convert): Replace first
452 parameter with basic_string_view so that strings with different
453 allocators can be accepted.
454 (path::generic_string<C,T,A>()): Use basic_string object that uses the
455 right allocator type.
456 * testsuite/27_io/filesystem/path/generic/94242.cc: New test.
457 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
458 test coverage.
459
98f29f56
JW
4602020-03-18 Jonathan Wakely <jwakely@redhat.com>
461
b3341826
JW
462 PR libstdc++/94033
463 * include/std/type_traits (__is_nt_default_constructible_atom): Remove.
464 (__is_nt_default_constructible_impl): Remove.
465 (__is_nothrow_default_constructible_impl): Remove.
466 (__is_nt_constructible_impl): Add bool template parameter. Adjust
467 partial specializations.
468 (__is_nothrow_constructible_impl): Replace class template with alias
469 template.
470 (is_nothrow_default_constructible): Derive from alias template
471 __is_nothrow_constructible_impl instead of
472 __is_nothrow_default_constructible_impl.
473 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
474
e5de406f
JW
475 * include/std/stop_token (stop_token::_Stop_state_ref): Define
476 comparison operators explicitly if the compiler won't synthesize them.
477
07522ae9
JW
478 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
479 __cpp_lib_concepts before using iter_reference_t.
480 * include/bits/stream_iterator.h (istream_iterator): Check
481 __cpp_lib_concepts before using default_sentinel_t.
482 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
483
98f29f56
JW
484 PR libstdc++/94203
485 * include/experimental/executor (executor::executor(Executor)): Call
486 make_shared directly instead of _M_create. Create _Tgt1 object.
487 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
488 Call allocate_shared directly instead of _M_create. Create _Tgt2
489 object.
490 (executor::target_type): Add cast needed for new _Tgt interface.
491 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
492 (executor::_Tgt): Define the same interface whether RTTI is enabled or
493 not.
494 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use
495 std::type_info in the interface.
496 (executor::_Tgt::_M_func): Add data member.
497 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
498 (executor::_Tgt1::_S_func): Define function to access target without
499 depending on RTTI.
500 (executor::_M_create): Remove.
501 (operator==, operator!=): Simplify comparisons for executor.
502 * include/experimental/socket (is_error_code_enum<socket_errc>):
503 Define specialization before use.
504 * testsuite/experimental/net/executor/1.cc: New test.
505
c62f5e6e
JW
5062020-03-16 Jonathan Wakely <jwakely@redhat.com>
507
508 PR libstdc++/94199
509 * include/experimental/executor (service_already_exists): Add default
510 constructor. Declare make_service to be a friend.
511 * testsuite/experimental/net/execution_context/make_service.cc: New
512 test.
513
fcc443b9
JW
5142020-03-12 Jonathan Wakely <jwakely@redhat.com>
515
516 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
517 a null pointer to functions with nonnull(1) attribute.
518
8f0d8cd8
PP
5192020-03-11 Patrick Palka <ppalka@redhat.com>
520
4512b7d8
PP
521 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
522 'address' -> 'std::__addressof'.
523 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
524 a non-forward input_range.
525 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
526 default constructor protected instead of deleted, like with
527 input_iterator_wrapper.
528 (test_range::iterator): Add comment explaining that this type is used
529 only when the underlying wrapper is input_iterator_wrapper or
530 output_iterator_wrapper. Remove delegating defaulted constructor so
531 that the inherited default constructor is used instead.
532
8f0d8cd8
PP
533 LWG 3286 ranges::size is not required to be valid after a call to
534 ranges::begin on an input range
535 * include/std/ranges (subrange::subrange): Split single-argument
536 constructor into two, one constrained by _S_store_size and another by
537 !_S_store_size.
538 (take_view::begin): Call size() before calling ranges::begin(_M_base).
539 * testsuite/std/ranges/adaptors/lwg3286.cc: New test.
540 * testsuite/std/ranges/subrange/lwg3286.cc: New test.
541
3654d49d
JW
5422020-03-10 Jonathan Wakely <jwakely@redhat.com>
543
0b7f1e24
JW
544 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
545 instead of _M_current.
546 (split_view::_OuterIter::operator++): Likewise.
547
cf0c3a45
JW
548 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
549 (transform_view::_Iterator::operator*): Add noexcept-specifier.
550 (transform_view::_Iterator::iter_move): Inline __iter_move body here.
551 (split_view::_OuterIter::__current): Add noexcept.
552 (split_view::_InnerIter::__iter_swap): Remove.
553 (split_view::_InnerIter::__iter_move): Remove.
554 (split_view::_InnerIter::_M_i_current): New accessors.
555 (split_view::_InnerIter::__at_end): Use _M_i_current().
556 (split_view::_InnerIter::operator*): Likewise.
557 (split_view::_InnerIter::operator++): Likewise.
558 (iter_move(const _InnerIter&)): Likewise.
559 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
560 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
561 for iter_move and iter_swap on split_view's inner iterator.
562
c222eabc
JW
563 PR c++/94117
564 * include/std/ranges (ranges::transform_view::_Iterator::iter_move):
565 Change expression in noexcept-specifier to match function body.
566
3654d49d
JW
567 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
568 comment explaining multiple dg-do directives.
569 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
570 so test is run as well as compiled.
571
ea182fe6
JW
5722020-03-09 Jonathan Wakely <jwakely@redhat.com>
573
574 PR libstdc++/94063
575 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
576 handle concatenations that change the type of the first component.
577 (path::operator+=(basic_string_view<value_type>)): Likewise.
578 * testsuite/27_io/filesystem/path/concat/94063.cc: New test.
579
6d082cd9
PP
5802020-03-06 Patrick Palka <ppalka@redhat.com>
581
6aa2ca21
PP
582 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend
583 join_view::_Sentinel<!_Const>.
584 * testsuite/std/ranges/adaptors/join.cc: Augment test.
585
6d082cd9
PP
586 PR libstdc++/93978
587 * include/bits/range_access.h (__cust_access::_Empty::operator()):
588 Declare return type to be bool instead of auto.
589 * testsuite/std/ranges/adaptors/93978.cc: New test.
590
180eeeae
JW
5912020-03-06 Jonathan Wakely <jwakely@redhat.com>
592
4cdcb2c9 593 PR libstdc++/94069
b0815713
JW
594 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
595 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
596 second argument to __glibcxx_rwlock_init.
597 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
598
180eeeae
JW
599 PR libstdc++/93244
600 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
601 test to not fail due to PR 94063.
602 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
603 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
604
28119fba
AK
6052020-03-06 Andreas Krebbel <krebbel@linux.ibm.com>
606
607 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
608 would match ENOSYS.
609
6a705283
JW
6102020-03-05 Jonathan Wakely <jwakely@redhat.com>
611
9412b35a
JW
612 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
613 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
614 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
615 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
616 for return value, and in comparison.
617 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
618
6a705283
JW
619 PR libstdc++/94051
620 * include/std/string_view: Include <bits/ostream_insert.h>.
621 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
622
94f7d7ec
JW
6232020-03-04 Jonathan Wakely <jwakely@redhat.com>
624
625 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
626
05779e2c
PP
6272020-03-04 Patrick Palka <ppalka@redhat.com>
628
712b182a
PP
629 PR libstdc++/94017
630 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
631 condition for when to use memset, making sure to additionally check that
632 the output pointer's value type is a non-volatile byte type. Instead of
633 requiring that the fill type is a byte type, just require that it's an
634 integral type.
635 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
636 New test.
637 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
638 New test.
639 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
640 blocked by PR 94017.
641 * testsuite/25_algorithms/fill/94017.cc: New test.
642 * testsuite/25_algorithms/fill_n/94017.cc: New test.
643
144dfc68
PP
644 LWG 3355 The memory algorithms should support move-only input iterators
645 introduced by P1207
646 * include/bits/ranges_uninitialized.h
647 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
648 to copy __ifirst, which could be a move-only input iterator. Use
649 operator- instead of ranges::distance to compute distance from a sized
650 sentinel.
651 (__uninitialized_copy_n_fn::operator()): Likewise.
652 (__uninitialized_move_fn::operator()): Likewise.
653 (__uninitialized_move_n_fn::operator()): Likewise.
654 (__uninitialized_destroy_fn::operator()): Use std::move to avoid
655 attempting to copy __first.
656 (__uninitialized_destroy_n_fn::operator()): Likewise.
657 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
658 Augment test.
659 * .../specialized_algorithms/uninitialized_copy/constrained.cc:
660 Likewise.
661 * .../specialized_algorithms/uninitialized_move/constrained.cc:
662 Likewise.
663
26af9cd8
PP
664 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
665 protected instead of private.
666 (test_sized_range_sized_sent): New.
667
d6d4b339
PP
668 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
669 New testsuite iterator.
670 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
671 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
672
05779e2c
PP
673 * include/bits/ranges_uninitialized.h
674 (uninitialized_copy_fn::operator()): Pass a reference type as the first
675 argument to is_nothrow_assignable_v.
676 (uninitialized_copy_fn::operator()): Likewise.
677 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result
678 with the input iterator stripped of its move_iterator.
679 (uninitialized_move_n_fn::operator()): Likewise.
680 (uninitialized_fill_fn::operator()): Pass a reference type as the first
681 argument to is_nothrow_assignable_v.
682 (uninitialized_fill_n_fn::operator()): Likewise.
683
9b4f00dd
JW
6842020-03-03 Jonathan Wakely <jwakely@redhat.com>
685
462f6c20
JW
686 PR libstdc++/94013
687 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
688 traits to control when to use memmove and memcmp optimizations.
689 (__is_nonvolatile_trivially_copyable): New helper trait.
690 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
691 use memcmp optimization with volatile data.
692 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
693 (__copy_or_move, __copy_or_move_backward): Use __memcpyable.
694 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
695 (__copy_move_backward_a2): Likewise.
696 (__equal_aux1): Use __memcmpable.
697 (__lexicographical_compare_aux): Do not use memcmp optimization with
698 volatile data.
699 * testsuite/25_algorithms/copy/94013.cc: New test.
700 * testsuite/25_algorithms/copy_backward/94013.cc: New test.
701 * testsuite/25_algorithms/equal/94013.cc: New test.
702 * testsuite/25_algorithms/fill/94013.cc: New test.
703 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
704 * testsuite/25_algorithms/move/94013.cc: New test.
705 * testsuite/25_algorithms/move_backward/94013.cc: New test.
706
9b4f00dd
JW
707 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
708 Avoid redundant iterator comparisons (LWG 3410).
709
5fad0003
JW
7102020-03-02 Jonathan Wakely <jwakely@redhat.com>
711
d112e173
JW
712 PR libstdc++/93972
713 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to
714 differ.
715 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
716
4c391563
JW
717 * include/std/ranges (__detail::__maybe_empty_t): Rename to
718 __maybe_present_t.
719 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
720
5fad0003
JW
721 * include/bits/ranges_algo.h (shift_right): Add 'typename' to
722 dependent type.
723
fed76afb
L
7242020-03-01 H.J. Lu <hongjiu.lu@intel.com>
725
726 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
727
bd55ce63
JDA
7282020-02-29 John David Anglin <danglin@gcc.gnu.org>
729
566f544c
JDA
730 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
731 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
732 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
733 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
734 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
735
bd55ce63
JDA
736 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
737 Add libatomic option.
738 * testsuite/30_threads/jthread/jthread.cc: Likewise.
739
44c85722
FD
7402020-02-29 François Dumont <fdumont@gcc.gnu.org>
741
742 * include/bits/stl_algo.h
743 (__find_if, __count_if, __is_permutation, std::is_permutation): Move...
744 * include/bits/stl_algobase.h: ...here.
745 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
746
d4912dc7
JDA
7472020-02-29 John David Anglin <danglin@gcc.gnu.org>
748
68a1a11f
JDA
749 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
750 option.
751 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
752 Likewise.
753 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
754 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
755 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
756 * testsuite/30_threads/stop_token/stop_source.cc: Likewise.
757 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
758 * testsuite/30_threads/stop_token/stop_token.cc: Likewise.
759 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
760 Likewise.
761
d4912dc7
JDA
762 PR libstdc++/92906
763 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
764
799270b4
PP
7652020-02-28 Patrick Palka <ppalka@redhat.com>
766
ce33801f
PP
767 PR libstdc++/93972
768 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
769 Fix condition for when to use memcmp, making it consistent with the
770 corresponding condition used in std::lexicographical_compare.
771 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
772
799270b4
PP
773 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
774 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to
775 existing signatures for C++2a.
776
4735f92d
JW
7772020-02-28 Jonathan Wakely <jwakely@redhat.com>
778
779 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
780 test instead of just compiling it.
781
a1535015
PP
7822020-02-28 Patrick Palka <ppalka@redhat.com>
783
77e596cf
PP
784 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
785 whenever the underlying range models common_range.
786
a1535015
PP
787 * include/std/ranges (__detail::_CachedPosition): New struct.
788 (views::filter_view::_S_needs_cached_begin): New member variable.
789 (views::filter_view::_M_cached_begin): New member variable.
790 (views::filter_view::begin): Use _M_cached_begin to cache its
791 result.
792 (views::drop_view::_S_needs_cached_begin): New static member variable.
793 (views::drop_view::_M_cached_begin): New member variable.
794 (views::drop_view::begin): Use _M_cached_begin to cache its result
795 when _S_needs_cached_begin.
796 (views::drop_while_view::_M_cached_begin): New member variable.
797 (views::drop_while_view::begin): Use _M_cached_begin to cache its
798 result.
799 (views::reverse_view::_S_needs_cached_begin): New static member
800 variable.
801 (views::reverse_view::_M_cached_begin): New member variable.
802 (views::reverse_view::begin): Use _M_cached_begin to cache its result
803 when _S_needs_cached_begin.
804 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
805 drop_view::begin caches its result.
806 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
807 that drop_while_view::begin caches its result.
808 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
809 filter_view::begin caches its result.
810 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
811 reverse_view::begin caches its result.
812
86e2dc22
JW
8132020-02-28 Jonathan Wakely <jwakely@redhat.com>
814
a51a546c
JW
815 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
816 filesystems that silently truncate timestamps.
817 * testsuite/experimental/filesystem/operations/last_write_time.cc:
818 Likewise.
819
86e2dc22
JW
820 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable
821 -Wstringop-overflow warnings.
822
44949494
JW
8232020-02-27 Jonathan Wakely <jwakely@redhat.com>
824
825 * testsuite/lib/libstdc++.exp (v3_target_compile): Add
826 -fdiagnostics-urls=never to options.
827
10a32d47
PP
8282020-02-27 Patrick Palka <ppalka@redhat.com>
829
ba49e9eb
PP
830 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend
831 _Iterator<!_Const>.
832 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
833 (take_view::_Sentinel<_Const>): Likewise.
834 (take_while_view::_Sentinel<_Const>): Likewise.
835 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
836 * testsuite/std/ranges/adaptors/split.cc: Augment test.
837 * testsuite/std/ranges/adaptors/take.cc: Augment test.
838 * testsuite/std/ranges/adaptors/take_while.cc: Augment test.
839 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
840
10a32d47
PP
841 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
842 base() of a vector<>::iterator is a pointer.
843 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
844 * testsuite/25_algorithms/move/constrained.cc: Likewise.
845 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
846 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
847 instead of &foo[0].
848 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
849 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
850 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
851 * testsuite/25_algorithms/sort/constrained.cc: Likewise.
852 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
853
eb8e6a30
JW
8542020-02-27 Jonathan Wakely <jwakely@redhat.com>
855
ae705159
JW
856 * include/debug/array (operator<=>): Define for C++20.
857 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
858 Adjust dg-error line numbers.
859 * testsuite/23_containers/array/tuple_interface/
860 tuple_element_debug_neg.cc: Likewise.
861
b112e3cb
JW
862 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
863 defining _GLIBCXX_ASSERTIONS.
864 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
865 * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
866 * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
867 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
868 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
869 * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
870 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
871 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
872 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
873 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
874 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
875 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
876
f32a3662
JW
877 * include/debug/string (__gnu_debug::basic_string::insert): Fix for
878 C++98 where the member function of the base class returns void.
879
e94f2542
JW
880 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
881 equality comparisons that support value-initialized iterators.
882
eb8e6a30
JW
883 * include/bits/boost_concept_check.h (__function_requires): Add
884 _GLIBCXX14_CONSTEXPR.
885 * testsuite/25_algorithms/min/concept_checks.cc: New test.
886
fd335985
PP
8872020-02-26 Patrick Palka <ppalka@redhat.com>
888
8ce13842
PP
889 PR libstdc++/93936
890 * include/std/ranges (split_view::_InnerIter::operator==): Compare
891 the operands' _M_i rather than their _M_i.current().
892 * testsuite/std/ranges/adaptors/split.cc: Augment test.
893
fd335985
PP
894 P1645R1 constexpr for <numeric> algorithms
895 * include/bits/stl_numeric.h (iota, accumulate, inner_product,
896 partial_sum, adjacent_difference): Make conditionally constexpr for
897 C++20.
898 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
899 test macro.
900 (reduce, transform_reduce, exclusive_scan, inclusive_scan,
901 transform_exclusive_scan, transform_inclusive_scan): Make conditionally
902 constexpr for C++20.
903 * include/std/version (__cpp_lib_constexpr_numeric): Define.
904 * testsuite/26_numerics/accumulate/constexpr.cc: New test.
905 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
906 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
907 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
908 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
909 * testsuite/26_numerics/iota/constexpr.cc: Likewise.
910 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
911 * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
912 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
913 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
914 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
915
8017d95c
JW
9162020-02-26 Jonathan Wakely <jwakely@redhat.com>
917
113f0a63
JW
918 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
919 variables in smaller scope and avoid calling ranges::distance when we
920 know they are pointers. Remove statically-unreachable use of
921 __builtin_unreachable().
922 * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
923 Define inline.
924
8017d95c
JW
925 * include/std/ranges (__detail::__maybe_empty_t): Define new helper
926 alias.
927 (__detail::__maybe_const_t): Likewise.
928 (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
929 (transform_view, take_view, take_while_view, elements_view): Use
930 __maybe_const_t.
931 (join_view, split_view): Use both.
932
7f0f1083
PP
9332020-02-25 Patrick Palka <ppalka@redhat.com>
934
76a8c0f6
PP
935 LWG 3397 basic_istream_view::iterator should not provide
936 iterator_category
937 * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
938 Rename to ...
939 (basic_istream_view:_Iterator::iterator_concept): ... this.
940 * testsuite/std/ranges/istream_view.cc: Augment test.
941
ec15da7c
PP
942 LWG 3325 Constrain return type of transformation function for
943 transform_view
944 * include/std/ranges (transform_view): Constrain the return type of the
945 transformation function as per LWG 3325.
946 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
947
55c4b3f4
PP
948 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
949 * include/std/ranges (join_view::_Iterator::operator--): Require that
950 range_reference_t<_Base> models common_range.
951 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
952
510bd1c1
PP
953 LWG 3301 transform_view::_Iterator has incorrect iterator_category
954 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
955 determination of iterator_category as per LWG 3301.
956 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
957
7f0f1083
PP
958 LWG 3292 iota_view is under-constrained
959 * include/std/ranges (iota_view): Require that _Winc models semiregular
960 as per LWG 3292.
961 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
962
dfb93d05 9632020-02-25 Jonathan Wakely <jwakely@redhat.com>
5b904f17 964
490350a1
JW
965 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
966 during constant evaluation. Call __builtin_memmove directly instead of
967 __memmove.
968 (__copy_or_move_backward): Likewise.
969 * include/bits/stl_algobase.h (__memmove): Remove.
970 (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
971 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
972 Use __builtin_memmove directly instead of __memmove.
973 (__copy_move_a2): Do not use memmove during constant evaluation.
974 (__copy_move_backward_a2): Use _IsMove constant to select correct
975 __copy_move_backward specialization.
976 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
977 begin turned into moves during constant evaluation.
978
6de946e6
JW
979 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
980 previous commit.
981
5b904f17
JW
982 PR libstdc++/93872
983 * include/bits/stl_algobase.h (__memmove): Cast away const before
984 doing move assignment.
985 * testsuite/25_algorithms/move/93872.cc: New test.
986 * testsuite/25_algorithms/move_backward/93872.cc: New test.
987
c5eab4ed
PP
9882020-02-24 Patrick Palka <ppalka@redhat.com>
989
85c143d0
PP
990 PR libstdc++/93884
991 * include/bits/ranges_algobase.h (__copy_or_move,
992 __copy_or_move_backward): Don't inspect the iter_value_t of the output
993 iterator, instead inspect its iterator_traits directly.
994 * include/bits/stl_iterator.h (back_insert_iterator::container):
995 Conditionally initialize.
996 (back_insert_iterator::difference_type): Conditionally define.
997 (back_insert_iterator::back_insert_iterator): Conditionally define this
998 default constructor.
999 (front_insert_iterator::container): Conditionally initialize.
1000 (front_insert_iterator::difference_type): Conditionally define.
1001 (front_insert_iterator::front_insert_iterator): Conditionally define
1002 this default constructor.
1003 * 24_iterators/back_insert_iterator/pr93884.cc: New test.
1004 * 24_iterators/front_insert_iterator/pr93884.cc: New test.
1005
c5eab4ed
PP
1006 P0769R2 Add shift to <algorithm>
1007 * include/bits/ranges_algo.h (shift_left, shift_right): New.
1008 * testsuite/25_algorithms/shift_left/1.cc: New test.
1009 * testsuite/25_algorithms/shift_right/1.cc: New test.
1010
3841739c
JW
10112020-02-24 Jonathan Wakely <jwakely@redhat.com>
1012
8566286e
JW
1013 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
1014 Make noexcept-specifier conditional.
1015 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
1016 noexcept-specifier.
1017
120e8734
JW
1018 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
1019 Add constructor.
1020 (operator==(istream_iterator, default_sentinel_t)): Add operator.
1021 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
1022 * include/bits/streambuf_iterator.h
1023 (istreambuf_iterator(default_sentinel_t)): Add constructor.
1024 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
1025 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
1026 New test.
1027 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
1028 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
1029 New test.
1030 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
1031
3841739c
JW
1032 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
1033 (ranges::enable_view): Simplify (LWG 3326).
1034 * include/bits/range_access.h (ranges::enable_view): Declare.
1035 * include/bits/regex.h (__enable_view_impl): Remove partial
1036 specialization.
1037 * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
1038 * include/bits/stl_set.h (__enable_view_impl): Likewise.
1039 * include/bits/unordered_set.h (__enable_view_impl): Likewise.
1040 * include/debug/multiset.h (__enable_view_impl): Likewise.
1041 * include/debug/set.h (__enable_view_impl): Likewise.
1042 * include/debug/unordered_set (__enable_view_impl): Likewise.
1043 * include/experimental/string_view (ranges::enable_view): Define
1044 partial specialization.
1045 * include/std/span (ranges::enable_view): Likewise.
1046 * include/std/string_view (ranges::enable_view): Likewise.
1047 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
1048
9e589880
JW
10492020-02-21 Jonathan Wakely <jwakely@redhat.com>
1050
1051 * include/std/optional (operator<=>(optional<T>, optional<U>))
1052 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
1053 Define for C++20.
1054 * include/std/tuple (__tuple_cmp): New helper function for <=>.
1055 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
1056 * include/std/variant (operator<=>(variant<T...>, variant<T...>))
1057 (operator<=>(monostate, monostate)): Define for C++20.
1058 * testsuite/20_util/optional/relops/three_way.cc: New test.
1059 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
1060 * testsuite/20_util/variant/89851.cc: Move to ...
1061 * testsuite/20_util/variant/relops/89851.cc: ... here.
1062 * testsuite/20_util/variant/90008.cc: Move to ...
1063 * testsuite/20_util/variant/relops/90008.cc: ... here.
1064 * testsuite/20_util/variant/relops/three_way.cc: New test.
1065
5586e506
PP
10662020-02-20 Patrick Palka <ppalka@redhat.com>
1067
6e63438a
PP
1068 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
1069 function.
1070 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use
1071 __maybe_refwrap to capture lvalue references by reference, and then use
1072 unwrap_reference_t to forward the by-reference captures as references.
1073 * testsuite/std/ranges/adaptors/split.cc: Augment test.
1074 * testsuite/std/ranges/adaptors/split_neg.cc: New test.
1075
5586e506
PP
1076 * include/std/ranges (iota_view): Forward declare _Sentinel.
1077 (iota_view::_Iterator): Befriend _Sentinel.
1078 (iota_view::_Sentinel::_M_equal): New member function.
1079 (iota_view::_Sentinel::operator==): Use it.
1080 (views::_Iota::operator()): Forward __f using the correct type.
1081 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
1082 with integers of different signedness, to appease iota_view's deduction
1083 guide.
1084 * testsuite/std/ranges/iota/iota_view.cc: Augment test.
1085
c7b591f3
JW
10862020-02-20 Jonathan Wakely <jwakely@redhat.com>
1087
e817c23f
JW
1088 * include/bits/range_access.h (ranges::begin): Reject array of
1089 incomplete type.
1090 (ranges::end, ranges::size): Require arrays to be bounded.
1091 (ranges::data): Require lvalue or borrowed_range.
1092 (ranges::iterator_t): Remove constraint.
1093 * testsuite/std/ranges/access/begin.cc: Do not check array of
1094 incomplete type.
1095 * testsuite/std/ranges/access/begin_neg.cc: New test.
1096 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
1097 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
1098 * testsuite/std/ranges/access/ssize.cc: Do not check array of
1099 incomplete type.
1100
4be779f5
JW
1101 * include/std/system_error (error_category::operator<=>)
1102 (operator<=>(const error_code&, const error_code&))
1103 (operator<=>(const error_condition&, const error_condition&)): Define
1104 for C++20.
1105 * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
1106 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
1107 test.
1108 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
1109 incorrect comment.
1110 * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
1111 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
1112 incorrect comment.
1113 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
1114 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
1115 incorrect comment.
1116 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
1117 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
1118 Remove incorrect comment.
1119 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
1120 test.
1121
20fa41e6
JW
1122 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
1123
c7b591f3
JW
1124 * include/std/thread (thread::id::operator<=>): Define for C++20.
1125 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
1126 functions in namespace std.
1127 * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
1128
38c7b74d
PP
11292020-02-19 Patrick Palka <ppalka@redhat.com>
1130
1131 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
1132 null terminator of the underlying string as part of the test_range.
1133 (main): Call test03.
1134
a45fb21a
JW
11352020-02-19 Jonathan Wakely <jwakely@redhat.com>
1136
1b425f3a
JW
1137 * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
1138 requirement (LWG 3385).
1139 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
1140 expected declaration.
1141
7433536b
JW
1142 * include/std/ranges (take_while_view, drop_view, drop_while_view)
1143 (elements_view:_Iterator): Initialize data members (LWG 3364).
1144
256f67aa
JW
1145 * libsupc++/compare (three_way_comparable): Remove always-false check
1146 that should have been removed with weak_equality (P1959R0).
1147 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
1148
0294dc5f
JW
1149 * include/std/concepts (__detail::__partially_ordered_with): Move here
1150 from <compare>.
1151 (totally_ordered, totally_ordered_with): Use __partially_ordered_with
1152 to simplify definition (LWG 3331).
1153 * libsupc++/compare (__detail::__partially_ordered_with): Move to
1154 <concepts>.
1155
241ed965
JW
1156 * include/std/concepts (totally_ordered_with): Remove redundant
1157 requirement (LWG 3329).
1158
77f5310f
JW
1159 * include/std/ranges (__detail::__convertible_to_non_slicing): New
1160 helper concept.
1161 (__detail::__pair_like_convertible_to): Remove.
1162 (__detail::__pair_like_convertible_from): Add requirements for
1163 non-slicing conversions.
1164 (subrange): Constrain constructors with __convertible_to_non_slicing.
1165 Remove constructors from pair-like types. Add new deduction guide.
1166 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
1167
59aa9e57
JW
1168 * include/bits/iterator_concepts.h (iter_move): Add declaration to
1169 prevent unqualified lookup finding a suitable declaration (LWG 3247).
1170
e89100ef
JW
1171 * include/std/memory_resource (polymorphic_allocator::allocate)
1172 (polymorphic_allocator::allocate_object): Change type of exception to
1173 bad_array_new_length (LWG 3237).
1174 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
1175
bb54e0b8
JW
1176 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
1177 * include/std/version (__cpp_lib_unwrap_ref): Likewise.
1178 * testsuite/20_util/unwrap_reference/1.cc: Check macro.
1179 * testsuite/20_util/unwrap_reference/3.cc: New test.
1180
5f031f97
JW
1181 * include/std/numeric (midpoint(T8, T*)): Do not check for complete
1182 type during overload resolution, use static assert instead (LWG 3200).
1183 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
1184 incomplete type.
1185 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
1186
66ae31eb
JW
1187 * include/std/span (span(T (&)[N])): Use non-deduced context to
1188 prevent first parameter from interfering with class template argument
1189 deduction (LWG 3369).
1190 * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
1191 * testsuite/23_containers/span/lwg3255.cc: Check for construction from
1192 rvalues.
1193
247f410b
JW
1194 * include/std/span (span::const_iterator, span::const_reverse_iterator)
1195 (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
1196 Remove (LWG 3320).
1197 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
1198 and cend.
1199 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
1200 Likewise.
1201 * testsuite/20_util/specialized_algorithms/uninitialized_copy/
1202 constrained.cc: Likewise.
1203 * testsuite/20_util/specialized_algorithms/
1204 uninitialized_default_construct/constrained.cc: Likewise.
1205 * testsuite/20_util/specialized_algorithms/uninitialized_fill/
1206 constrained.cc: Likewise.
1207 * testsuite/20_util/specialized_algorithms/uninitialized_move/
1208 constrained.cc: Likewise.
1209 * testsuite/20_util/specialized_algorithms/
1210 uninitialized_value_construct/constrained.cc: Likewise.
1211
aca60ecf
JW
1212 * include/bits/range_access.h (range_size_t): Define alias template.
1213 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
1214 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
1215
4cc3b275
JW
1216 * include/std/ranges (filter_view, transform_view, take_view)
1217 (join_view, split_view, reverse_view): Remove commented-out converting
1218 constructors (LWG 3280).
1219
5f3641d0
JW
1220 * include/std/memory (uninitialized_construct_using_allocator): Use
1221 std::construct_at (LWG 3321).
1222
020a03ee
JW
1223 * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
1224 (polymorphic_allocator::allocate_object)
1225 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
1226
15411a64
JW
1227 LWG 3379. "safe" in several library names is misleading
1228 * include/bits/range_access.h (enable_safe_range): Rename to
1229 enable_borrowed_range.
1230 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
1231 (safe_range): Rename to borrowed_range.
1232 * include/bits/ranges_algo.h: Adjust to use new names.
1233 * include/bits/ranges_algobase.h: Likewise.
1234 * include/bits/ranges_uninitialized.h: Likewise.
1235 * include/std/ranges: Likewise.
1236 (safe_iterator_t): Rename to borrowed_iterator_t.
1237 (safe_subrange_t): Rename to borrowed_subrange_t.
1238 * include/std/span: Adjust to use new names.
1239 * include/std/string_view: Likewise.
1240 * include/experimental/string_view: Likewise.
1241 * testsuite/std/ranges/access/begin.cc: Likewise.
1242 * testsuite/std/ranges/access/cbegin.cc: Likewise.
1243 * testsuite/std/ranges/access/cdata.cc: Likewise.
1244 * testsuite/std/ranges/access/cend.cc: Likewise.
1245 * testsuite/std/ranges/access/crbegin.cc: Likewise.
1246 * testsuite/std/ranges/access/crend.cc: Likewise.
1247 * testsuite/std/ranges/access/data.cc: Likewise.
1248 * testsuite/std/ranges/access/end.cc: Likewise.
1249 * testsuite/std/ranges/access/rbegin.cc: Likewise.
1250 * testsuite/std/ranges/access/rend.cc: Likewise.
1251 * testsuite/std/ranges/safe_range.cc: Likewise.
1252 * testsuite/std/ranges/safe_range_types.cc: Likewise.
1253 * testsuite/util/testsuite_iterators.h: Likewise.
1254
fa89adaa
JW
1255 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
1256 (tuple_element<1, const subrange<I, S, K>>): Add partial
1257 specializations (LWG 3398).
1258 * testsuite/std/ranges/subrange/tuple_like.cc: New test.
1259
a45fb21a
JW
1260 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
1261 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
1262 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
1263
242b4fb7
PP
12642020-02-18 Patrick Palka <ppalka@redhat.com>
1265
1266 P1983R0 Wording for GB301, US296, US292, US291, and US283
1267 * include/std/ranges (filter_view::pred): New member function.
1268 (join_view::_Iterator::_Iterator): Remove now-redundant comment since
1269 P1983R0 fixes the highlighted issue in the same way.
1270 (join_view::_Iterator<_Const>): Add friend
1271 join_view::_Iterator<!_Const>.
1272 (join_view::_M_inner): Remove mutable specifier, effectively reverting
1273 the proposed wording changes of P3278.
1274 (join_view::begin): Refine the condition for when to return a const
1275 iterator.
1276 (split_view::_OuterIter::_OuterIter): Adjust constraints.
1277 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
1278 exists and works.
1279
f5b4dc38
JW
12802020-02-18 Jonathan Wakely <jwakely@redhat.com>
1281
a5b213dd
JW
1282 PR libstdc++/93818
1283 * include/std/ranges (_RangeAdaptor): Add deduction guide.
1284 (filter_view::_Iterator): Add alias _Vp_iter and use in place of
1285 iterator_t<_Vp>.
1286 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
1287 (transform_view::_Iterator): Add alias _Base_iter and use in place of
1288 iterator_t<_Base>.
1289 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
1290 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
1291 (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
1292 (split_view::_InnerIter::_S_iter_cat()): Likewise.
1293
ce7b39d0
JW
1294 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
1295 assumption that long is wider than int.
1296 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
1297 * testsuite/20_util/integer_comparisons/less.cc: Likewise.
1298 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
1299 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
1300
9b8e2dea
JW
1301 P1976R2 Fixed-size span construction from dynamic range
1302 * include/std/span (__cpp_lib_span): Update value.
1303 (span(It, size_type), span(It, End)): Make conditionally explicit. Add
1304 assertion.
1305 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
1306 constraints.
1307 (span::first<Count>(), span::last<Count>()): Use explicit type in
1308 return statement.
1309 (as_bytes, as_writable_bytes): Likewise.
1310 * include/std/version (__cpp_lib_span): Update value.
1311 * testsuite/23_containers/span/1.cc: Check new value.
1312 * testsuite/23_containers/span/2.cc: Check new value.
1313 * testsuite/23_containers/span/explicit.cc: New test.
1314
d6c9e372
JW
1315 * include/std/span (span::__is_compatible_array): Simplify alias
1316 template by using requires-clause.
1317 (span::__is_compatible_ref): New alias template for constraining
1318 constructors.
1319 (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
1320 (span(It, size_type), span(It, End)): Use __is_compatible_ref.
1321 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
1322 redundant parentheses.
1323 (span(R&&)): Add missing constraints.
1324
f09f3242
JW
1325 * include/std/span (span): Reorder members and rename template
1326 parameters to match declarations in the C++2a working paper.
1327
f5b4dc38
JW
1328 P2116R0 Remove tuple-like protocol support from fixed-extent span
1329 * include/std/span (get, tuple_size, tuple_element): Remove.
1330 * testsuite/23_containers/span/everything.cc: Remove checks for
1331 tuple-like API.
1332 * testsuite/23_containers/span/get_neg.cc: Remove.
1333 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
1334 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
1335 * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
1336
f3169941
PP
13372020-02-17 Patrick Palka <ppalka@redhat.com>
1338
aa667c3f
PP
1339 P2106R0 Alternative wording for GB315 and GB316
1340 * include/bits/ranges_algo.h (in_fun_result): New.
1341 (for_each_result, for_each_n_result): Change into an alias of
1342 in_fun_result.
1343 (in_in_result): New.
1344 (mismatch_result): Change into an alias of in_in_result.
1345 (copy_if_result): Change into an alias of in_out_result.
1346 (swap_ranges_result): Change into an alias of in_in_result.
1347 (unary_transform_result): Change into an alias of in_out_result.
1348 (in_in_out_result): New.
1349 (binary_transform_result): Change into an alias of in_in_out_result.
1350 (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
1351 remove_copy_result, unique_copy_result, reverse_copy_result,
1352 rotate_copy_result, partial_sort_copy_result): Change into an alias of
1353 in_out_result.
1354 (in_out_out_result): New.
1355 (partition_copy_result, merge_result): Change into an alias of
1356 in_out_out_result.
1357 (set_union_result, set_intersection_result): Change into an alias of
1358 in_in_out_result.
1359 (set_difference_result): Change into an alias of in_out_result.
1360 (set_symmetric_difference): Change into an alias of in_in_out_result.
1361 (min_max_result): New.
1362 (minmax_result, minmax_element_result): Change into an alias of
1363 min_max_result.
1364 (in_found_result): New.
1365 (next_permutation_result, prev_permutation_result): Change into an alias
1366 of in_found_result.
1367 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
1368 Adjust following changes to next_permutation_result and
1369 prev_permutation_result.
1370 * include/bits/ranges_algobase.h (in_out_result): New.
1371 (copy_result, move_result, move_backward_result, copy_backward_result,
1372 copy_n_result): Change into an alias of in_out_result.
1373 * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
1374 uninitialized_copy_n_result, uninitialized_move_result,
1375 uninitialized_move_n_result): Likewise.
1376 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
1377 structured bindings.
1378 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
1379
f3169941
PP
1380 P1243R4 Rangify new algorithms
1381 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
1382 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
1383 * testsuite/25_algorithms/clamp/constrained.cc: New test.
1384 * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
1385 * testsuite/25_algorithms/sample/constrained.cc: New test.
1386
98cf2c26
JW
13872020-02-17 Jonathan Wakely <jwakely@redhat.com>
1388
c5e1c1d3
JW
1389 P1964R2 Wording for boolean-testable
1390 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
1391 (__adjacent_find_fn): Cast result of predicate to bool.
1392 * include/std/concepts (__boolean): Remove.
1393 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
1394 new helper concepts.
1395 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
1396 (predicate): Use __boolean_testable instead of boolean.
1397 * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
1398 Likewise.
1399
7ab36231
JW
1400 P1970R2 Consistency for size() functions: Add ranges::ssize
1401 * include/bits/range_access.h (_SSize, ssize): Define for C++20.
1402 * testsuite/std/ranges/access/ssize.cc: New test.
1403
9866abe3
JW
1404 P1956R1 On the names of low-level bit manipulation functions
1405 * include/bits/hashtable_policy.h: Update comment.
1406 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
1407 (ispow2, ceil2, floor2, log2p1): Likewise.
1408 (__cpp_lib_int_pow2): Add feature test macro.
1409 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
1410 * include/std/memory (assume_aligned): Adjust use of ispow2.
1411 * include/std/version (__cpp_lib_int_pow2): Add.
1412 * libsupc++/new_opa.cc: Adjust use of __ispow2.
1413 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
1414 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
1415 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
1416 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
1417 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
1418 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
1419 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
1420 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
1421 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
1422 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
1423 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
1424 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
1425
cfbc8fbb
JW
1426 * include/std/charconv: Add comment.
1427
9cd4eeef
JW
1428 PR libstdc++/92546 (partial)
1429 * include/bits/random.h (uniform_random_bit_generator): Move definition
1430 to <bits/uniform_int_dist.h>.
1431 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
1432 of <bits/random.h>.
1433 * include/bits/ranges_algobase.h: Do not include <cmath>.
1434 * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
1435 Move here.
1436 * include/std/ranges: Do not include <limits>.
1437 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
1438
c03b53da
JW
1439 PR libstdc++/92546 (partial)
1440 * include/Makefile.am: Add new header.
1441 * include/Makefile.in: Regenerate.
1442 * include/bits/int_limits.h: New header.
1443 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
1444 numeric_limits with __detail::__int_limits.
1445 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
1446 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
1447 Likewise.
1448 * include/std/charconv (__to_chars_8, __from_chars_binary)
1449 (__from_chars_alpha_to_num, from_chars): Likewise.
1450 * include/std/memory_resource (polymorphic_allocator::allocate)
1451 (polymorphic_allocator::allocate_object): Likewise.
1452 * include/std/string_view (basic_string_view::_S_compare): Likewise.
1453 * include/std/utility (in_range): Likewise.
1454 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
1455 extra error about incomplete type __int_limits<bool>.
1456 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
1457 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
1458 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
1459 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
1460 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
1461 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
1462 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
1463 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
1464 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
1465 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
1466 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
1467 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
1468
4540ef78
JW
1469 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
1470 value for partial_ordering::unordered.
1471
d6dfa3da
JW
1472 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
1473 const-qualified expression variations.
1474 * include/std/concepts (copyable): Likewise.
1475
98cf2c26
JW
1476 * include/std/type_traits (__is_standard_integer): New helper trait.
1477 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
1478 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
1479 * include/std/version (__cpp_lib_integer_comparison_functions): Define.
1480 * testsuite/20_util/integer_comparisons/1.cc: New test.
1481 * testsuite/20_util/integer_comparisons/2.cc: New test.
1482 * testsuite/20_util/integer_comparisons/equal.cc: New test.
1483 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
1484 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
1485 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
1486 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
1487 * testsuite/20_util/integer_comparisons/in_range.cc: New test.
1488 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
1489 * testsuite/20_util/integer_comparisons/less.cc: New test.
1490 * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
1491 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
1492 * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
1493 * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
1494 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
1495
93b8cfce
PP
14962020-02-16 Patrick Palka <ppalka@redhat.com>
1497
1498 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
1499 Move code after an early exit constexpr if to under an else branch.
1500 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
1501
90b7eb65
PP
15022020-02-15 Patrick Palka <ppalka@redhat.com>
1503
55992626
PP
1504 * include/bits/ranges_algo.h: Adjust whitespace and formatting.
1505 * include/bits/ranges_algobase.h: Likewise.
1506 * include/bits/ranges_uninitialized.h: Likewise.
1507
b40c57bd
PP
1508 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
1509 binary_search, copy_if, count, count_if, equal_range, find, find_end,
1510 find_first_of, find_if, find_if_not, for_each, generate, generate_n,
1511 includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
1512 is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
1513 lower_bound, make_heap, max, max_element, merge, min, min_element,
1514 minmax, minmax_element, mismatch, next_permutation, none_of,
1515 nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
1516 partition_point, pop_heap, prev_permutation, push_heap, remove,
1517 remove_copy, remove_copy_if, remove_if, replace, replace_copy,
1518 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
1519 search, search_n, set_difference, set_intersection,
1520 set_symmetric_difference, set_union, shuffle, sort, sort_heap,
1521 stable_partition, stable_sort, swap_ranges, transform, unique,
1522 unique_copy, upper_bound): Convert into function objects.
1523 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
1524 fill, move_backward, copy_backward): Likewise.
1525 * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
1526 uninitialized_default_construct_n, uninitialized_value_construct,
1527 uninitialized_value_construct_n, uninitialized_copy,
1528 uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
1529 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
1530 destroy, destroy_n): Likewise.
1531
90b7eb65
PP
1532 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
1533 (ranges::find_end): ... here.
1534 (ranges::__lexicographical_compare): Fold into ...
1535 (ranges::lexicographical_compare): ... here.
1536 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
1537 (ranges::equal): ... here.
1538
55b00d14
JW
15392020-02-15 Jonathan Wakely <jwakely@redhat.com>
1540
1541 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
1542 * include/std/deque: Likewise.
1543 * include/std/forward_list: Likewise.
1544 * include/std/list: Likewise.
1545 * include/std/string: Likewise.
1546 * include/std/vector: Likewise.
1547 * include/std/version: Likewise.
1548 * testsuite/23_containers/deque/erasure.cc: Test for new value.
1549 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
1550 * testsuite/23_containers/list/erasure.cc: Likewise.
1551 * testsuite/23_containers/map/erasure.cc: Likewise.
1552 * testsuite/23_containers/set/erasure.cc: Likewise.
1553 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
1554 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
1555 * testsuite/23_containers/vector/erasure.cc: Likewise.
1556
5b1d5885
JW
15572020-02-15 Jonathan Wakely <jwakely@redhat.com>
1558
1559 * include/bits/random.h (uniform_random_bit_generator): Require min()
1560 and max() to be constant expressions and min() to be less than max().
1561 * testsuite/26_numerics/random/concept.cc: Check additional cases.
1562 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
1563
90fc7b3c
PP
15642020-02-13 Patrick Palka <ppalka@redhat.com>
1565
613c932f
PP
1566 * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
1567 * include/Makefile.in: Regenerate.
1568 * include/bits/ranges_uninitialized.h: New header.
1569 * include/std/memory: Include it.
1570 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
1571 test.
1572 * .../uninitialized_copy/constrained.cc: New test.
1573 * .../uninitialized_default_construct/constrained.cc: New test.
1574 * .../uninitialized_fill/constrained.cc: New test.
1575 * .../uninitialized_move/constrained.cc: New test.
1576 * .../uninitialized_value_construct/constrained.cc: New test.
1577
90fc7b3c
PP
1578 * include/Makefile.am: Add bits/ranges_algobase.h
1579 * include/Makefile.in: Regenerate.
1580 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
1581 existing #includes.
1582 (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
1583 __detail::__is_move_iterator, copy_result, move_result,
1584 __equal, equal, copy_result, move_result, move_backward_result,
1585 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
1586 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
1587 fill): Split out into ...
1588 * bits/range_algobase.h: ... this new header.
1589
99bbab9f
PP
15902020-02-12 Patrick Palka <ppalka@redhat.com>
1591
1592 LWG 3389 and LWG 3390
1593 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
1594 constructing the move_iterator with __i.
1595 (counted_iterator::counted_iterator): Use std::move when initializing
1596 M_current with __i.
1597 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
1598 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
1599
02ce382c
SL
16002020-02-12 Sandra Loosemore <sandra@codesourcery.com>
1601
1602 PR libstdc++/79193
1603 PR libstdc++/88999
1604
1605 * configure: Regenerated.
1606
b32a3f32
FD
16072020-02-12 François Dumont <fdumont@gcc.gnu.org>
1608
1609 * include/bits/hashtable.h
1610 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
1611 missing std namespace qualification to forward call.
1612
dcda050e
JW
16132020-02-09 Jonathan Wakely <jwakely@redhat.com>
1614
38660e87
JW
1615 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
1616 comment.
1617 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
1618
97a7c229
JW
1619 * include/std/ranges: Fix non-ASCII characters in comment.
1620
dcda050e
JW
1621 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
1622 equality comparison to be valid and return bool.
1623 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
1624 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
1625 type with ambiguous conversion to fundamental types.
1626 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
1627
d222d8ec
JW
16282020-02-07 Jonathan Wakely <jwakely@redhat.com>
1629
c8dd2446
JW
1630 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
1631 Use remove_cvref_t.
1632 (readable_traits): Rename to indirectly_readable_traits.
1633 (readable): Rename to indirectly_readable.
1634 (writable): Rename to indirectly_writable.
1635 (__detail::__iter_exchange_move): Do not use remove_reference_t.
1636 (indirectly_swappable): Adjust requires expression parameter types.
1637 expression.
1638 * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
1639 (ranges::replace_if, ranges::generate_n, ranges::generate)
1640 (ranges::remove): Use new name for writable.
1641 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
1642 Use new name for readable.
1643 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
1644 new name for readable_traits.
1645 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
1646 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
1647 new definition of indirectly_readable.
1648
d222d8ec
JW
1649 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
1650 to take parameters of common_iterator, instead of the common_iterator
1651 type itself. Fix argument for __common_iter_has_arrow constraint.
1652 (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
1653
572992c8
JW
16542020-02-07 Jonathan Wakely <jwakely@redhat.com>
1655
1656 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
1657 warning.
1658 (basic_istream_view::_Iterator::operator++()): Add missing return.
1659
cba9ef06
PP
16602020-02-07 Patrick Palka <ppalka@redhat.com>
1661
a04f635d
PP
1662 * include/bits/ranges_algo.h: Remove extraneous &&.
1663
b7903d9f
PP
1664 * include/std/ranges (ranges::__detail::__stream_extractable,
1665 ranges::basic_istream_view, ranges::istream_view): Define.
1666 * testsuite/std/ranges/istream_view: New test.
1667
cba9ef06
PP
1668 Implement C++20 range adaptors
1669 * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
1670 (subrange::_S_store_size): Mark as const instead of constexpr to
1671 avoid what seems to be a bug in GCC.
1672 (__detail::__box): Give it defaulted copy and move constructors.
55d4cbcb
PP
1673 (ranges::views::_Single::operator()): Mark constexpr.
1674 (ranges::views::_Iota::operator()): Mark constexpr.
cba9ef06 1675 (__detail::Empty): Define.
55d4cbcb
PP
1676 (ranges::views::__closure::_RangeAdaptor,
1677 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
1678 ranges::views::all, ranges::__detail::find_if,
1679 ranges::__detail::find_if_not, ranges::__detail::mismatch,
1680 ranges::detail::min, filter_view, ranges::views::filter, transform_view,
1681 ranges::views::transform, take_view, ranges::views::take,
1682 take_while_view, ranges::views::take_while, drop_view,
1683 ranges::views::drop, join_view, ranges::views::join,
cba9ef06 1684 __detail::require_constant, __detail::tiny_range, split_view,
55d4cbcb
PP
1685 ranges::views::split, ranges::views::_Counted, ranges::views::counted,
1686 common_view, ranges::views::common, reverse_view,
1687 ranges::views::reverse,
1688 ranges::views::__detail::__is_reversible_subrange,
1689 ranges::views::__detail::__is_reverse_view, reverse_view,
1690 ranges::views::reverse, __detail::__has_tuple_element, elements_view,
1691 ranges::views::elements, ranges::views::keys, ranges::views::values):
1692 Define.
1693 (views): Alias for ranges::views.
1694 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
1695 tuple_element<1, ranges::subrange>): New partial specializations.
cba9ef06
PP
1696 * testsuite/std/ranges/adaptors/all.cc: New test.
1697 * testsuite/std/ranges/adaptors/common.cc: Likewise.
1698 * testsuite/std/ranges/adaptors/counted.cc: Likewise.
1699 * testsuite/std/ranges/adaptors/drop.cc: Likewise.
1700 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
1701 * testsuite/std/ranges/adaptors/elements.cc: Likewise.
1702 * testsuite/std/ranges/adaptors/filter.cc: Likewise.
1703 * testsuite/std/ranges/adaptors/join.cc: Likewise.
1704 * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
1705 * testsuite/std/ranges/adaptors/split.cc: Likewise.
1706 * testsuite/std/ranges/adaptors/take.cc: Likewise.
1707 * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
1708 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
1709
5713834e
JW
17102020-02-07 Jonathan Wakely <jwakely@redhat.com>
1711
0d57370c
JW
1712 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
1713 type of enumerations and comparison category types.
1714 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
1715 (__cmp_cat::_Ncmp::unordered): Change value to 2.
1716 (partial_ordering::_M_value, weak_ordering::_M_value)
1717 (strong_ordering::_M_value): Change type to __cmp_cat::type.
1718 (partial_ordering::_M_is_ordered): Remove data member.
1719 (partial_ordering): Use second bit of _M_value for unordered. Adjust
1720 comparison operators.
1721 (weak_ordering::operator partial_ordering): Simplify to remove
1722 branches.
1723 (operator<=>(unspecified, weak_ordering)): Likewise.
1724 (strong_ordering::operator partial_ordering): Likewise.
1725 (strong_ordering::operator weak_ordering): Likewise.
1726 (operator<=>(unspecified, strong_ordering)): Likewise.
1727 * testsuite/18_support/comparisons/categories/partialord.cc: New test.
1728 * testsuite/18_support/comparisons/categories/strongord.cc: New test.
1729 * testsuite/18_support/comparisons/categories/weakord.cc: New test.
1730
5713834e
JW
1731 * include/std/ranges (iota_view::_Iterator): Fix typo in name of
1732 __cpp_lib_three_way_comparison macro and use deduced return type for
1733 operator<=>.
1734 * testsuite/std/ranges/iota/iterator.cc: New test.
1735
bc464641
PP
17362020-02-07 Patrick Palka <ppalka@redhat.com>
1737 Jonathan Wakely <jwakely@redhat.com>
1738
1739 Implement C++20 constrained algorithms
1740 * include/Makefile.am: Add new header.
1741 * include/Makefile.in: Regenerate.
1742 * include/std/algorithm: Include <bits/ranges_algo.h>.
1743 * include/bits/ranges_algo.h: New file.
1744 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
1745 * testsuite/25_algorithms/all_of/constrained.cc: New test.
1746 * testsuite/25_algorithms/any_of/constrained.cc: New test.
1747 * testsuite/25_algorithms/binary_search/constrained.cc: New test.
1748 * testsuite/25_algorithms/copy/constrained.cc: New test.
1749 * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
1750 * testsuite/25_algorithms/copy_if/constrained.cc: New test.
1751 * testsuite/25_algorithms/copy_n/constrained.cc: New test.
1752 * testsuite/25_algorithms/count/constrained.cc: New test.
1753 * testsuite/25_algorithms/count_if/constrained.cc: New test.
1754 * testsuite/25_algorithms/equal/constrained.cc: New test.
1755 * testsuite/25_algorithms/equal_range/constrained.cc: New test.
1756 * testsuite/25_algorithms/fill/constrained.cc: New test.
1757 * testsuite/25_algorithms/fill_n/constrained.cc: New test.
1758 * testsuite/25_algorithms/find/constrained.cc: New test.
1759 * testsuite/25_algorithms/find_end/constrained.cc: New test.
1760 * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
1761 * testsuite/25_algorithms/find_if/constrained.cc: New test.
1762 * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
1763 * testsuite/25_algorithms/for_each/constrained.cc: New test.
1764 * testsuite/25_algorithms/generate/constrained.cc: New test.
1765 * testsuite/25_algorithms/generate_n/constrained.cc: New test.
1766 * testsuite/25_algorithms/heap/constrained.cc: New test.
1767 * testsuite/25_algorithms/includes/constrained.cc: New test.
1768 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
1769 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
1770 * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
1771 * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
1772 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
1773 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
1774 test.
1775 * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
1776 * testsuite/25_algorithms/max/constrained.cc: New test.
1777 * testsuite/25_algorithms/max_element/constrained.cc: New test.
1778 * testsuite/25_algorithms/merge/constrained.cc: New test.
1779 * testsuite/25_algorithms/min/constrained.cc: New test.
1780 * testsuite/25_algorithms/min_element/constrained.cc: New test.
1781 * testsuite/25_algorithms/minmax/constrained.cc: New test.
1782 * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
1783 * testsuite/25_algorithms/mismatch/constrained.cc: New test.
1784 * testsuite/25_algorithms/move/constrained.cc: New test.
1785 * testsuite/25_algorithms/move_backward/constrained.cc: New test.
1786 * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
1787 * testsuite/25_algorithms/none_of/constrained.cc: New test.
1788 * testsuite/25_algorithms/nth_element/constrained.cc: New test.
1789 * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
1790 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
1791 * testsuite/25_algorithms/partition/constrained.cc: New test.
1792 * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
1793 * testsuite/25_algorithms/partition_point/constrained.cc: New test.
1794 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
1795 * testsuite/25_algorithms/remove/constrained.cc: New test.
1796 * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
1797 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
1798 * testsuite/25_algorithms/remove_if/constrained.cc: New test.
1799 * testsuite/25_algorithms/replace/constrained.cc: New test.
1800 * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
1801 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
1802 * testsuite/25_algorithms/replace_if/constrained.cc: New test.
1803 * testsuite/25_algorithms/reverse/constrained.cc: New test.
1804 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
1805 * testsuite/25_algorithms/rotate/constrained.cc: New test.
1806 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
1807 * testsuite/25_algorithms/search/constrained.cc: New test.
1808 * testsuite/25_algorithms/search_n/constrained.cc: New test.
1809 * testsuite/25_algorithms/set_difference/constrained.cc: New test.
1810 * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
1811 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
1812 test.
1813 * testsuite/25_algorithms/set_union/constrained.cc: New test.
1814 * testsuite/25_algorithms/shuffle/constrained.cc: New test.
1815 * testsuite/25_algorithms/sort/constrained.cc: New test.
1816 * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
1817 * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
1818 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
1819 * testsuite/25_algorithms/transform/constrained.cc: New test.
1820 * testsuite/25_algorithms/unique/constrained.cc: New test.
1821 * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
1822 * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
1823
d1aa7705
JW
18242020-02-06 Jonathan Wakely <jwakely@redhat.com>
1825
bd630df0
JW
1826 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
1827 number in comment. Fix indentation.
1828
d1aa7705
JW
1829 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
1830 redundant _GLIBCXX20_CONSTEXPR.
1831
26eae9ac
JW
1832 * include/std/ranges (viewable_range): Replace decay_t with
1833 remove_cvref_t (LWG 3375).
1834
269e8130
JW
18352020-02-05 Jonathan Wakely <jwakely@redhat.com>
1836
1837 * include/bits/iterator_concepts.h (iter_reference_t)
1838 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
1839 Remove workarounds for PR c++/67704.
1840 * testsuite/24_iterators/aliases.cc: New test.
1841
7db12d15
PP
18422020-02-05 Patrick Palka <ppalka@redhat.com>
1843
1844 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
1845 when initializing _M_current.
1846 (move_iterator::base): Split into two overloads differing in
1847 ref-qualifiers as in P1207R4 for C++20.
1848
9962493c
JW
18492020-02-04 Jonathan Wakely <jwakely@redhat.com>
1850
9bc5bea1
JW
1851 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
1852 use.
1853
9962493c
JW
1854 PR libstdc++/93562
1855 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
1856 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
1857 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
1858
20fa702b
AB
18592020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
1860
1861 * configure: Regenerate.
1862
6e5a1963
PP
18632020-01-31 Patrick Palka <ppalka@redhat.com>
1864
1865 * testsuite/24_iterators/range_operations/distance.cc: Do not assume
1866 test_range::end() returns the same type as test_range::begin().
1867 * testsuite/24_iterators/range_operations/next.cc: Likewise.
1868 * testsuite/24_iterators/range_operations/prev.cc: Likewise.
1869 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
1870 Always return a sentinel<I>.
1871
5cd2e126
JW
18722020-01-29 Jonathan Wakely <jwakely@redhat.com>
1873
0a8f4feb
JW
1874 PR libstdc++/92895
1875 * include/std/stop_token (stop_token::stop_possible()): Call new
1876 _M_stop_possible() function.
1877 (stop_token::stop_requested()): Do not use stop_possible().
1878 (stop_token::binary_semaphore): New class, as temporary stand-in for
1879 std::binary_semaphore.
1880 (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
1881 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
1882 New data members for symchronization with stop_callback destruction.
1883 (stop_token::_Stop_cb::_Stop_cb): Make non-template.
1884 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
1885 Remove.
1886 (stop_token::_Stop_cb::_M_run): New member function.
1887 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
1888 Remove.
1889 (stop_token::_Stop_state::_M_owners): New data member to track
1890 reference count for ownership.
1891 (stop_token::_Stop_state::_M_value): New data member combining a
1892 spinlock, the stop requested flag, and the reference count for
1893 associated stop_source objects.
1894 (stop_token::_Stop_state::_M_requester): New data member for
1895 synchronization with stop_callback destruction.
1896 (stop_token::_Stop_state::_M_stop_possible()): New member function.
1897 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
1898 of _M_value.
1899 (stop_token::_Stop_state::_M_add_owner)
1900 (stop_token::_Stop_state::_M_release_ownership)
1901 (stop_token::_Stop_state::_M_add_ssrc)
1902 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
1903 updating reference counts.
1904 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
1905 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
1906 (stop_token::_Stop_state::_M_try_lock)
1907 (stop_token::_Stop_state::_M_try_lock_and_stop)
1908 (stop_token::_Stop_state::_M_do_try_lock): New member functions for
1909 managing spinlock.
1910 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
1911 read and update state. Release lock while running callbacks. Use new
1912 data members to synchronize with callback destruction.
1913 (stop_token::_Stop_state::_M_remove_callback): Likewise.
1914 (stop_token::_Stop_state::_M_register_callback): Use atomic operations
1915 to read and update state.
1916 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
1917 replacing shared_ptr.
1918 (stop_source::stop_source(const stop_source&)): Update reference count.
1919 (stop_source::operator=(const stop_source&)): Likewise.
1920 (stop_source::~stop_source()): Likewise.
1921 (stop_source::stop_source(stop_source&&)): Define as defaulted.
1922 (stop_source::operator=(stop_source&&)): Establish postcondition on
1923 parameter.
1924 (stop_callback): Enforce preconditions on template parameter. Replace
1925 base class with data member of new _Cb_impl type.
1926 (stop_callback::stop_callback(const stop_token&, Cb&&))
1927 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
1928 (stop_callback::_Cb_impl): New type wrapping _Callback member and
1929 defining the _S_execute member function.
1930 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
1931 test.
1932 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
1933 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
1934 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
1935 New test.
1936 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
1937 test.
1938 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
1939 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
1940 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
1941 test.
1942
f214ffb3
JW
1943 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
1944 three_way_comparable_with.
1945 (__detail::__3way_cmp_with): Remove workaround for fixed bug.
1946 (compare_three_way::operator()): Remove redundant constraint from
1947 requires-clause.
1948 (__detail::_Synth3way::operator()): Use three_way_comparable_with
1949 instead of workaround.
1950 * testsuite/18_support/comparisons/object/93479.cc: Prune extra
1951 output due to simplified constraints on compare_three_way::operator().
1952
83b02010
JW
1953 PR libstdc++/93479
1954 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
1955 * testsuite/18_support/comparisons/object/93479.cc: New test.
1956
5cd2e126
JW
1957 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
1958 returns the same type as test_range::begin(). Add comments.
1959 * testsuite/std/ranges/access/rbegin.cc: Likewise.
1960 * testsuite/std/ranges/access/rend.cc: Likewise.
1961 * testsuite/std/ranges/range.cc: Do not assume the sentinel for
1962 test_range is the same as its iterator type.
1963 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
1964 operator- overloads to satisfy sized_sentinel_for when the iterator
1965 satisfies random_access_iterator.
1966
759812fd
JW
19672020-01-28 Jonathan Wakely <jwakely@redhat.com>
1968
72a9fd20
JW
1969 PR libstdc++/93470
1970 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
1971 static assertion to object types.
1972
759812fd
JW
1973 PR libstdc++/93325
1974 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
1975 clock_gettime instead of explicit glibc version check.
1976 * configure: Regenerate.
1977
a5d81aaa
JW
19782020-01-28 Martin Liska <mliska@suse.cz>
1979
1980 PR libstdc++/93478
1981 * include/std/atomic: Fix typo.
1982 * include/std/optional: Likewise.
1983
19842020-01-27 Andrew Burgess <andrew.burgess@embecosm.com>
1985
1986 * configure: Regenerate.
1987
389cd88c
JW
19882020-01-27 Jonathan Wakely <jwakely@redhat.com>
1989
1990 PR libstdc++/93426
1991 * include/std/span (span): Fix deduction guide.
1992 * testsuite/23_containers/span/deduction.cc: New test.
1993
482eeff5
JW
19942020-01-24 Jonathan Wakely <jwakely@redhat.com>
1995
1996 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
1997 (__cmp_cat::_Ord::equivalent): Add enumerator.
1998 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
1999 and greater.
2000 (partial_ordering, weak_ordering, strong_ordering): Remove
2001 constructors taking __cmp_cat::_Eq parameters. Use renamed
2002 enumerators.
2003
e8e66971
MR
20042020-01-24 Maciej W. Rozycki <macro@wdc.com>
2005
2006 * acinclude.m4: Handle `--with-toolexeclibdir='.
2007 * Makefile.in: Regenerate.
2008 * aclocal.m4: Regenerate.
2009 * configure: Regenerate.
2010 * doc/Makefile.in: Regenerate.
2011 * include/Makefile.in: Regenerate.
2012 * libsupc++/Makefile.in: Regenerate.
2013 * po/Makefile.in: Regenerate.
2014 * python/Makefile.in: Regenerate.
2015 * src/Makefile.in: Regenerate.
2016 * src/c++11/Makefile.in: Regenerate.
2017 * src/c++17/Makefile.in: Regenerate.
2018 * src/c++98/Makefile.in: Regenerate.
2019 * src/filesystem/Makefile.in: Regenerate.
2020 * testsuite/Makefile.in: Regenerate.
2021
7a900bce
AO
20222020-01-23 Alexandre Oliva <oliva@adacore.com>
2023
f9e84b31
AO
2024 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
2025 * configure: Rebuild.
2026
7a900bce
AO
2027 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
2028
04681fca
JW
20292020-01-23 Jonathan Wakely <jwakely@redhat.com>
2030
2031 PR libstdc++/91947
2032 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
2033 rule.
2034 * include/Makefile.in: Regenerate.
2035
c784f162
JW
20362020-01-20 Jonathan Wakely <jwakely@redhat.com>
2037
2038 * doc/xml/faq.xml: Fix grammar.
2039 * doc/xml/manual/appendix_contributing.xml: Improve instructions.
2040 * doc/xml/manual/spine.xml: Update copyright years.
2041 * doc/html/*: Regenerate.
2042
f4d83eba
ER
20432020-01-19 Eric S. Raymond <esr@thyrsus.com>
2044
2045 * doc/xml/faq.xml: Update for SVN -> Git transition.
2046 * doc/xml/manual/appendix_contributing.xml: Likewise.
2047 * doc/xml/manual/status_cxx1998.xml: Likewise.
2048 * doc/xml/manual/status_cxx2011.xml: Likewise.
2049 * doc/xml/manual/status_cxx2014.xml: Likewise.
2050 * doc/xml/manual/status_cxx2017.xml: Likewise.
2051 * doc/xml/manual/status_cxx2020.xml: Likewise.
2052 * doc/xml/manual/status_cxxtr1.xml: Likewise.
2053 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
2054
49789fd0
IS
20552020-01-18 Iain Sandoe <iain@sandoe.co.uk>
2056
2057 * include/Makefile.am: Add coroutine to the std set.
2058 * include/Makefile.in: Regenerated.
2059 * include/std/coroutine: New file.
2060
0ba6a850
JW
20612020-01-17 Jonathan Wakely <jwakely@redhat.com>
2062
2063 PR libstdc++/92376
2064 * include/bits/c++config: Only do PSTL config when the header is
2065 present, to fix freestanding.
2066 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
2067 functions if they were detected by configure.
2068
98d56ea8
JW
20692020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de>
2070 Matthew Bauer <mjbauer95@gmail.com>
2071 Jonathan Wakely <jwakely@redhat.com>
2072
2073 PR bootstrap/64271 (partial)
2074 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
2075 to unsigned short.
2076 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
2077 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
2078 definitions with NetBSD upstream.
2079 (ctype_base::blank): Use _CTYPE_BL.
2080 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
2081 Declaration.
2082 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
2083 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
2084 parameters to unsigned char.
2085 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
2086
d9165389
FD
20872020-01-16 François Dumont <fdumont@gcc.gnu.org>
2088
2089 PR libstdc++/91263
2090 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
2091 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
2092 (_Equality_base): Remove.
2093 (_Equality<>::_M_equal): Review implementation. Use
2094 std::is_permutation.
2095 * testsuite/23_containers/unordered_multiset/operators/1.cc
2096 (Hash, Equal, test02, test03): New.
2097 * testsuite/23_containers/unordered_set/operators/1.cc
2098 (Hash, Equal, test02, test03): New.
2099
2a0f6c61
JW
21002020-01-15 Jonathan Wakely <jwakely@redhat.com>
2101
2102 PR libstdc++/93267
2103 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
2104 Move here from <bits/range_access.h> and define using __int128 when
2105 available.
2106 (__is_integer_like, __is_signed_integer_like): Move here from
2107 <bits/range_access.h>.
2108 (weakly_incrementable): Use __is_signed_integer_like.
2109 * include/bits/range_access.h (__max_diff_type, __max_size_type)
2110 (__is_integer_like, __is_signed_integer_like): Move to
2111 <bits/iterator_concepts.h>.
2112 (__make_unsigned_like_t): Move here from <ranges>.
2113 * include/std/ranges (__make_unsigned_like_t): Move to
2114 <bits/range_access.h>.
2115 (iota_view): Replace using-directive with using-declarations.
2116 * testsuite/std/ranges/iota/93267.cc: New test.
2117 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
2118
e4379a93
JW
21192020-01-13 Jonathan Wakely <jwakely@redhat.com>
2120
fe7cc34f
JW
2121 PR libstdc++/93244
2122 * include/bits/fs_path.h (path::generic_string<C,A>)
2123 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
2124 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
2125 root-dir is converted to forward slash in generic pathname.
2126 * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
2127 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
2128
e4379a93
JW
2129 PR libstdc++/58605
2130 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
2131 Define.
2132 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
2133 (__atomic_float): Add default member initializer for C++20.
2134 * include/std/atomic (atomic): Likewise.
2135 (atomic::atomic()): Remove noexcept-specifier on default constructor.
2136 * include/std/version (__cpp_lib_atomic_value_initialization): Define.
2137 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
2138 number.
2139 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
2140 * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
2141 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
2142 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
2143 expected result for is_trivially_default_constructible.
2144 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
2145 * testsuite/29_atomics/atomic_float/value_init.cc: New test.
2146 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
2147 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
2148 * testsuite/29_atomics/atomic_integral/cons/value_init.cc
2149 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
2150 expected results for is_trivially_default_constructible.
2151 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
2152 new test generator.
2153
7918cb93
JW
21542020-01-10 Jonathan Wakely <jwakely@redhat.com>
2155
68be73fc
JW
2156 * testsuite/util/testsuite_iterators.h: Improve comment.
2157
78f02e80
JW
2158 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
2159 initialization syntax.
2160
7918cb93
JW
2161 PR libstdc++/92285
2162 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
2163 of base class independent of __cplusplus value.
2164 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
2165 type defined in the base class
2166 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
2167 * testsuite/24_iterators/istreambuf_iterator/requirements/
2168 base_classes.cc: Adjust expected base class for C++98.
2169
acd43917
OH
21702020-01-09 Olivier Hainque <hainque@adacore.com>
2171
2172 * doc/xml/manual/appendix_contributing.xml: Document _C2
2173 as a reserved identifier, by VxWorks.
2174 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
2175 * include/bits/stl_multimap.h: Likewise.
2176
caa39b2e
JW
21772020-01-09 Jonathan Wakely <jwakely@redhat.com>
2178
1a788638
JW
2179 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
2180 (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
2181 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
2182 partial specialization to disambiguate the two constrained
2183 specializations.
2184
caa39b2e
JW
2185 * include/experimental/type_traits (experimental::is_pod_v): Disable
2186 -Wdeprecated-declarations warnings around reference to std::is_pod.
2187 * include/std/type_traits (is_pod_v): Likewise.
2188 * testsuite/18_support/max_align_t/requirements/2.cc: Also check
2189 is_standard_layout and is_trivial. Do not check is_pod for C++20.
2190 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
2191 Add -Wno-deprecated for C++20.
2192 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
2193 * testsuite/20_util/is_pod/value.cc: Likewise.
2194 * testsuite/experimental/type_traits/value.cc: Likewise.
2195
1a6c5064
JTM
21962020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
2197
2198 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
2199 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
2200 * testuite/20_util/is_pod/deprecated-2a.cc: New test.
2201
d574c8aa
JW
22022020-01-09 Jonathan Wakely <jwakely@redhat.com>
2203
160e95dc
JW
2204 PR libstdc++/93205
2205 * include/bits/random.h (operator>>): Check stream operation succeeds.
2206 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
2207 typedefs.
2208 (operator>>): Remove redundant __istream_type typedefs. Check stream
2209 operations succeed.
2210 (__extract_params): New function to fill a vector from a stream.
2211 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
2212
d574c8aa
JW
2213 PR libstdc++/93208
2214 * config/abi/pre/gnu.ver: Add new exports.
2215 * include/std/memory_resource (memory_resource::~memory_resource()):
2216 Do not define inline.
2217 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
2218 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
2219 Define.
2220 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
2221 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
2222
b9c84e95
FD
22232020-01-09 François Dumont <fdumont@gcc.gnu.org>
2224
2225 PR libstdc++/92124
2226 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
2227 template alias.
2228 (_Hashtable<>::__fwd_value_for): New.
2229 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
2230 parameter.
2231 (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
2232 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
2233 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
2234 with std::move.
2235 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
2236 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
2237 Adapt.
2238 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
2239 Adapt.
2240 * testsuite/23_containers/unordered_set/92124.cc: New.
2241
fff148b7
JW
22422020-01-08 Jonathan Wakely <jwakely@redhat.com>
2243
2244 PR libstdc++/93201
2245 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
2246 detailed error reporting for remove_all. Check result of recursive
2247 call before incrementing iterator.
2248 (remove_all(const path&), remove_all(const path&, error_code&)): Use
2249 do_remove_all.
2250 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
2251 result of recursive call before incrementing iterator.
2252 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
2253 are reported correctly.
2254 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
2255
9e3c1eb7
TR
22562020-01-07 Thomas Rodgers <trodgers@redhat.com>
2257
2258 * include/std/condition_variable
2259 (condition_variable_any::wait_on): Rename to match current draft
2260 standard.
2261 (condition_variable_any::wait_on_until): Likewise.
2262 (condition_variable_any::wait_on_for): Likewise.
2263 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
2264 Adjust tests to account for renamed methods.
2265
6af8819b
FD
22662020-01-07 François Dumont <fdumont@gcc.gnu.org>
2267
2268 PR libstdc++/92124
2269 * include/bits/stl_tree.h
2270 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
2271 std::move_if_noexcept by std::move.
2272 * testsuite/23_containers/map/92124.cc: New.
2273 * testsuite/23_containers/set/92124.cc: New.
2274
f31a99f7
JW
22752020-01-06 Jonathan Wakely <jwakely@redhat.com>
2276
a4a1f965
JW
2277 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
2278 (stop_source): Likewise (LWG 3362).
2279 * testsuite/30_threads/stop_token/stop_source.cc: Test equality
2280 comparisons.
2281
f31a99f7
JW
2282 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
2283 (lexicographical_compare_three_way): Do not depend on
2284 __cpp_lib_concepts.
2285 * include/std/version (__cpp_lib_three_way_comparison): Only define
2286 when __cpp_lib_concepts is defined.
2287 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
2288
b4e70137
JW
22892020-01-03 Jonathan Wakely <jwakely@redhat.com>
2290
2291 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
2292 Only define four-argument overload when __cpp_lib_concepts is defined.
2293
a8497ec6
JDA
22942020-01-01 John David Anglin <danglin@gcc.gnu.org>
2295
2296 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
2297
8d9254fc 22982020-01-01 Jakub Jelinek <jakub@redhat.com>
5624e564
JJ
2299
2300 Update copyright years.
b4df5e92 2301\f
8d9254fc 2302Copyright (C) 2020 Free Software Foundation, Inc.
b4df5e92
JW
2303
2304Copying and distribution of this file, with or without modification,
2305are permitted in any medium without royalty provided the copyright
2306notice and this notice are preserved.
This page took 1.0075 seconds and 5 git commands to generate.