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