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