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