]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/ChangeLog
libstdc++: Fix std::string error in Debug Mode
[thirdparty/gcc.git] / libstdc++-v3 / ChangeLog
CommitLineData
eb8e6a30
JW
12020-02-27 Jonathan Wakely <jwakely@redhat.com>
2
f32a3662
JW
3 * include/debug/string (__gnu_debug::basic_string::insert): Fix for
4 C++98 where the member function of the base class returns void.
5
e94f2542
JW
6 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
7 equality comparisons that support value-initialized iterators.
8
eb8e6a30
JW
9 * include/bits/boost_concept_check.h (__function_requires): Add
10 _GLIBCXX14_CONSTEXPR.
11 * testsuite/25_algorithms/min/concept_checks.cc: New test.
12
fd335985
PP
132020-02-26 Patrick Palka <ppalka@redhat.com>
14
8ce13842
PP
15 PR libstdc++/93936
16 * include/std/ranges (split_view::_InnerIter::operator==): Compare
17 the operands' _M_i rather than their _M_i.current().
18 * testsuite/std/ranges/adaptors/split.cc: Augment test.
19
fd335985
PP
20 P1645R1 constexpr for <numeric> algorithms
21 * include/bits/stl_numeric.h (iota, accumulate, inner_product,
22 partial_sum, adjacent_difference): Make conditionally constexpr for
23 C++20.
24 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
25 test macro.
26 (reduce, transform_reduce, exclusive_scan, inclusive_scan,
27 transform_exclusive_scan, transform_inclusive_scan): Make conditionally
28 constexpr for C++20.
29 * include/std/version (__cpp_lib_constexpr_numeric): Define.
30 * testsuite/26_numerics/accumulate/constexpr.cc: New test.
31 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
32 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
33 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
34 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
35 * testsuite/26_numerics/iota/constexpr.cc: Likewise.
36 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
37 * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
38 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
39 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
40 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
41
8017d95c
JW
422020-02-26 Jonathan Wakely <jwakely@redhat.com>
43
113f0a63
JW
44 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
45 variables in smaller scope and avoid calling ranges::distance when we
46 know they are pointers. Remove statically-unreachable use of
47 __builtin_unreachable().
48 * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
49 Define inline.
50
8017d95c
JW
51 * include/std/ranges (__detail::__maybe_empty_t): Define new helper
52 alias.
53 (__detail::__maybe_const_t): Likewise.
54 (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
55 (transform_view, take_view, take_while_view, elements_view): Use
56 __maybe_const_t.
57 (join_view, split_view): Use both.
58
7f0f1083
PP
592020-02-25 Patrick Palka <ppalka@redhat.com>
60
76a8c0f6
PP
61 LWG 3397 basic_istream_view::iterator should not provide
62 iterator_category
63 * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
64 Rename to ...
65 (basic_istream_view:_Iterator::iterator_concept): ... this.
66 * testsuite/std/ranges/istream_view.cc: Augment test.
67
ec15da7c
PP
68 LWG 3325 Constrain return type of transformation function for
69 transform_view
70 * include/std/ranges (transform_view): Constrain the return type of the
71 transformation function as per LWG 3325.
72 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
73
55c4b3f4
PP
74 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
75 * include/std/ranges (join_view::_Iterator::operator--): Require that
76 range_reference_t<_Base> models common_range.
77 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
78
510bd1c1
PP
79 LWG 3301 transform_view::_Iterator has incorrect iterator_category
80 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
81 determination of iterator_category as per LWG 3301.
82 * testsuite/std/ranges/adaptors/transform.cc: Augment test.
83
7f0f1083
PP
84 LWG 3292 iota_view is under-constrained
85 * include/std/ranges (iota_view): Require that _Winc models semiregular
86 as per LWG 3292.
87 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
88
dfb93d05 892020-02-25 Jonathan Wakely <jwakely@redhat.com>
5b904f17 90
490350a1
JW
91 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
92 during constant evaluation. Call __builtin_memmove directly instead of
93 __memmove.
94 (__copy_or_move_backward): Likewise.
95 * include/bits/stl_algobase.h (__memmove): Remove.
96 (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
97 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
98 Use __builtin_memmove directly instead of __memmove.
99 (__copy_move_a2): Do not use memmove during constant evaluation.
100 (__copy_move_backward_a2): Use _IsMove constant to select correct
101 __copy_move_backward specialization.
102 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
103 begin turned into moves during constant evaluation.
104
6de946e6
JW
105 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
106 previous commit.
107
5b904f17
JW
108 PR libstdc++/93872
109 * include/bits/stl_algobase.h (__memmove): Cast away const before
110 doing move assignment.
111 * testsuite/25_algorithms/move/93872.cc: New test.
112 * testsuite/25_algorithms/move_backward/93872.cc: New test.
113
c5eab4ed
PP
1142020-02-24 Patrick Palka <ppalka@redhat.com>
115
85c143d0
PP
116 PR libstdc++/93884
117 * include/bits/ranges_algobase.h (__copy_or_move,
118 __copy_or_move_backward): Don't inspect the iter_value_t of the output
119 iterator, instead inspect its iterator_traits directly.
120 * include/bits/stl_iterator.h (back_insert_iterator::container):
121 Conditionally initialize.
122 (back_insert_iterator::difference_type): Conditionally define.
123 (back_insert_iterator::back_insert_iterator): Conditionally define this
124 default constructor.
125 (front_insert_iterator::container): Conditionally initialize.
126 (front_insert_iterator::difference_type): Conditionally define.
127 (front_insert_iterator::front_insert_iterator): Conditionally define
128 this default constructor.
129 * 24_iterators/back_insert_iterator/pr93884.cc: New test.
130 * 24_iterators/front_insert_iterator/pr93884.cc: New test.
131
c5eab4ed
PP
132 P0769R2 Add shift to <algorithm>
133 * include/bits/ranges_algo.h (shift_left, shift_right): New.
134 * testsuite/25_algorithms/shift_left/1.cc: New test.
135 * testsuite/25_algorithms/shift_right/1.cc: New test.
136
3841739c
JW
1372020-02-24 Jonathan Wakely <jwakely@redhat.com>
138
8566286e
JW
139 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
140 Make noexcept-specifier conditional.
141 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
142 noexcept-specifier.
143
120e8734
JW
144 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
145 Add constructor.
146 (operator==(istream_iterator, default_sentinel_t)): Add operator.
147 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
148 * include/bits/streambuf_iterator.h
149 (istreambuf_iterator(default_sentinel_t)): Add constructor.
150 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
151 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
152 New test.
153 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
154 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
155 New test.
156 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
157
3841739c
JW
158 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
159 (ranges::enable_view): Simplify (LWG 3326).
160 * include/bits/range_access.h (ranges::enable_view): Declare.
161 * include/bits/regex.h (__enable_view_impl): Remove partial
162 specialization.
163 * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
164 * include/bits/stl_set.h (__enable_view_impl): Likewise.
165 * include/bits/unordered_set.h (__enable_view_impl): Likewise.
166 * include/debug/multiset.h (__enable_view_impl): Likewise.
167 * include/debug/set.h (__enable_view_impl): Likewise.
168 * include/debug/unordered_set (__enable_view_impl): Likewise.
169 * include/experimental/string_view (ranges::enable_view): Define
170 partial specialization.
171 * include/std/span (ranges::enable_view): Likewise.
172 * include/std/string_view (ranges::enable_view): Likewise.
173 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
174
9e589880
JW
1752020-02-21 Jonathan Wakely <jwakely@redhat.com>
176
177 * include/std/optional (operator<=>(optional<T>, optional<U>))
178 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
179 Define for C++20.
180 * include/std/tuple (__tuple_cmp): New helper function for <=>.
181 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
182 * include/std/variant (operator<=>(variant<T...>, variant<T...>))
183 (operator<=>(monostate, monostate)): Define for C++20.
184 * testsuite/20_util/optional/relops/three_way.cc: New test.
185 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
186 * testsuite/20_util/variant/89851.cc: Move to ...
187 * testsuite/20_util/variant/relops/89851.cc: ... here.
188 * testsuite/20_util/variant/90008.cc: Move to ...
189 * testsuite/20_util/variant/relops/90008.cc: ... here.
190 * testsuite/20_util/variant/relops/three_way.cc: New test.
191
5586e506
PP
1922020-02-20 Patrick Palka <ppalka@redhat.com>
193
6e63438a
PP
194 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
195 function.
196 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use
197 __maybe_refwrap to capture lvalue references by reference, and then use
198 unwrap_reference_t to forward the by-reference captures as references.
199 * testsuite/std/ranges/adaptors/split.cc: Augment test.
200 * testsuite/std/ranges/adaptors/split_neg.cc: New test.
201
5586e506
PP
202 * include/std/ranges (iota_view): Forward declare _Sentinel.
203 (iota_view::_Iterator): Befriend _Sentinel.
204 (iota_view::_Sentinel::_M_equal): New member function.
205 (iota_view::_Sentinel::operator==): Use it.
206 (views::_Iota::operator()): Forward __f using the correct type.
207 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
208 with integers of different signedness, to appease iota_view's deduction
209 guide.
210 * testsuite/std/ranges/iota/iota_view.cc: Augment test.
211
c7b591f3
JW
2122020-02-20 Jonathan Wakely <jwakely@redhat.com>
213
e817c23f
JW
214 * include/bits/range_access.h (ranges::begin): Reject array of
215 incomplete type.
216 (ranges::end, ranges::size): Require arrays to be bounded.
217 (ranges::data): Require lvalue or borrowed_range.
218 (ranges::iterator_t): Remove constraint.
219 * testsuite/std/ranges/access/begin.cc: Do not check array of
220 incomplete type.
221 * testsuite/std/ranges/access/begin_neg.cc: New test.
222 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
223 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
224 * testsuite/std/ranges/access/ssize.cc: Do not check array of
225 incomplete type.
226
4be779f5
JW
227 * include/std/system_error (error_category::operator<=>)
228 (operator<=>(const error_code&, const error_code&))
229 (operator<=>(const error_condition&, const error_condition&)): Define
230 for C++20.
231 * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
232 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
233 test.
234 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
235 incorrect comment.
236 * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
237 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
238 incorrect comment.
239 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
240 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
241 incorrect comment.
242 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
243 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
244 Remove incorrect comment.
245 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
246 test.
247
20fa41e6
JW
248 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
249
c7b591f3
JW
250 * include/std/thread (thread::id::operator<=>): Define for C++20.
251 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
252 functions in namespace std.
253 * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
254
38c7b74d
PP
2552020-02-19 Patrick Palka <ppalka@redhat.com>
256
257 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
258 null terminator of the underlying string as part of the test_range.
259 (main): Call test03.
260
a45fb21a
JW
2612020-02-19 Jonathan Wakely <jwakely@redhat.com>
262
1b425f3a
JW
263 * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
264 requirement (LWG 3385).
265 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
266 expected declaration.
267
7433536b
JW
268 * include/std/ranges (take_while_view, drop_view, drop_while_view)
269 (elements_view:_Iterator): Initialize data members (LWG 3364).
270
256f67aa
JW
271 * libsupc++/compare (three_way_comparable): Remove always-false check
272 that should have been removed with weak_equality (P1959R0).
273 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
274
0294dc5f
JW
275 * include/std/concepts (__detail::__partially_ordered_with): Move here
276 from <compare>.
277 (totally_ordered, totally_ordered_with): Use __partially_ordered_with
278 to simplify definition (LWG 3331).
279 * libsupc++/compare (__detail::__partially_ordered_with): Move to
280 <concepts>.
281
241ed965
JW
282 * include/std/concepts (totally_ordered_with): Remove redundant
283 requirement (LWG 3329).
284
77f5310f
JW
285 * include/std/ranges (__detail::__convertible_to_non_slicing): New
286 helper concept.
287 (__detail::__pair_like_convertible_to): Remove.
288 (__detail::__pair_like_convertible_from): Add requirements for
289 non-slicing conversions.
290 (subrange): Constrain constructors with __convertible_to_non_slicing.
291 Remove constructors from pair-like types. Add new deduction guide.
292 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
293
59aa9e57
JW
294 * include/bits/iterator_concepts.h (iter_move): Add declaration to
295 prevent unqualified lookup finding a suitable declaration (LWG 3247).
296
e89100ef
JW
297 * include/std/memory_resource (polymorphic_allocator::allocate)
298 (polymorphic_allocator::allocate_object): Change type of exception to
299 bad_array_new_length (LWG 3237).
300 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
301
bb54e0b8
JW
302 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
303 * include/std/version (__cpp_lib_unwrap_ref): Likewise.
304 * testsuite/20_util/unwrap_reference/1.cc: Check macro.
305 * testsuite/20_util/unwrap_reference/3.cc: New test.
306
5f031f97
JW
307 * include/std/numeric (midpoint(T8, T*)): Do not check for complete
308 type during overload resolution, use static assert instead (LWG 3200).
309 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
310 incomplete type.
311 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
312
66ae31eb
JW
313 * include/std/span (span(T (&)[N])): Use non-deduced context to
314 prevent first parameter from interfering with class template argument
315 deduction (LWG 3369).
316 * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
317 * testsuite/23_containers/span/lwg3255.cc: Check for construction from
318 rvalues.
319
247f410b
JW
320 * include/std/span (span::const_iterator, span::const_reverse_iterator)
321 (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
322 Remove (LWG 3320).
323 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
324 and cend.
325 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
326 Likewise.
327 * testsuite/20_util/specialized_algorithms/uninitialized_copy/
328 constrained.cc: Likewise.
329 * testsuite/20_util/specialized_algorithms/
330 uninitialized_default_construct/constrained.cc: Likewise.
331 * testsuite/20_util/specialized_algorithms/uninitialized_fill/
332 constrained.cc: Likewise.
333 * testsuite/20_util/specialized_algorithms/uninitialized_move/
334 constrained.cc: Likewise.
335 * testsuite/20_util/specialized_algorithms/
336 uninitialized_value_construct/constrained.cc: Likewise.
337
aca60ecf
JW
338 * include/bits/range_access.h (range_size_t): Define alias template.
339 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
340 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
341
4cc3b275
JW
342 * include/std/ranges (filter_view, transform_view, take_view)
343 (join_view, split_view, reverse_view): Remove commented-out converting
344 constructors (LWG 3280).
345
5f3641d0
JW
346 * include/std/memory (uninitialized_construct_using_allocator): Use
347 std::construct_at (LWG 3321).
348
020a03ee
JW
349 * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
350 (polymorphic_allocator::allocate_object)
351 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
352
15411a64
JW
353 LWG 3379. "safe" in several library names is misleading
354 * include/bits/range_access.h (enable_safe_range): Rename to
355 enable_borrowed_range.
356 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
357 (safe_range): Rename to borrowed_range.
358 * include/bits/ranges_algo.h: Adjust to use new names.
359 * include/bits/ranges_algobase.h: Likewise.
360 * include/bits/ranges_uninitialized.h: Likewise.
361 * include/std/ranges: Likewise.
362 (safe_iterator_t): Rename to borrowed_iterator_t.
363 (safe_subrange_t): Rename to borrowed_subrange_t.
364 * include/std/span: Adjust to use new names.
365 * include/std/string_view: Likewise.
366 * include/experimental/string_view: Likewise.
367 * testsuite/std/ranges/access/begin.cc: Likewise.
368 * testsuite/std/ranges/access/cbegin.cc: Likewise.
369 * testsuite/std/ranges/access/cdata.cc: Likewise.
370 * testsuite/std/ranges/access/cend.cc: Likewise.
371 * testsuite/std/ranges/access/crbegin.cc: Likewise.
372 * testsuite/std/ranges/access/crend.cc: Likewise.
373 * testsuite/std/ranges/access/data.cc: Likewise.
374 * testsuite/std/ranges/access/end.cc: Likewise.
375 * testsuite/std/ranges/access/rbegin.cc: Likewise.
376 * testsuite/std/ranges/access/rend.cc: Likewise.
377 * testsuite/std/ranges/safe_range.cc: Likewise.
378 * testsuite/std/ranges/safe_range_types.cc: Likewise.
379 * testsuite/util/testsuite_iterators.h: Likewise.
380
fa89adaa
JW
381 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
382 (tuple_element<1, const subrange<I, S, K>>): Add partial
383 specializations (LWG 3398).
384 * testsuite/std/ranges/subrange/tuple_like.cc: New test.
385
a45fb21a
JW
386 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
387 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
388 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
389
242b4fb7
PP
3902020-02-18 Patrick Palka <ppalka@redhat.com>
391
392 P1983R0 Wording for GB301, US296, US292, US291, and US283
393 * include/std/ranges (filter_view::pred): New member function.
394 (join_view::_Iterator::_Iterator): Remove now-redundant comment since
395 P1983R0 fixes the highlighted issue in the same way.
396 (join_view::_Iterator<_Const>): Add friend
397 join_view::_Iterator<!_Const>.
398 (join_view::_M_inner): Remove mutable specifier, effectively reverting
399 the proposed wording changes of P3278.
400 (join_view::begin): Refine the condition for when to return a const
401 iterator.
402 (split_view::_OuterIter::_OuterIter): Adjust constraints.
403 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
404 exists and works.
405
f5b4dc38
JW
4062020-02-18 Jonathan Wakely <jwakely@redhat.com>
407
a5b213dd
JW
408 PR libstdc++/93818
409 * include/std/ranges (_RangeAdaptor): Add deduction guide.
410 (filter_view::_Iterator): Add alias _Vp_iter and use in place of
411 iterator_t<_Vp>.
412 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
413 (transform_view::_Iterator): Add alias _Base_iter and use in place of
414 iterator_t<_Base>.
415 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
416 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
417 (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
418 (split_view::_InnerIter::_S_iter_cat()): Likewise.
419
ce7b39d0
JW
420 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
421 assumption that long is wider than int.
422 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
423 * testsuite/20_util/integer_comparisons/less.cc: Likewise.
424 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
425 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
426
9b8e2dea
JW
427 P1976R2 Fixed-size span construction from dynamic range
428 * include/std/span (__cpp_lib_span): Update value.
429 (span(It, size_type), span(It, End)): Make conditionally explicit. Add
430 assertion.
431 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
432 constraints.
433 (span::first<Count>(), span::last<Count>()): Use explicit type in
434 return statement.
435 (as_bytes, as_writable_bytes): Likewise.
436 * include/std/version (__cpp_lib_span): Update value.
437 * testsuite/23_containers/span/1.cc: Check new value.
438 * testsuite/23_containers/span/2.cc: Check new value.
439 * testsuite/23_containers/span/explicit.cc: New test.
440
d6c9e372
JW
441 * include/std/span (span::__is_compatible_array): Simplify alias
442 template by using requires-clause.
443 (span::__is_compatible_ref): New alias template for constraining
444 constructors.
445 (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
446 (span(It, size_type), span(It, End)): Use __is_compatible_ref.
447 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
448 redundant parentheses.
449 (span(R&&)): Add missing constraints.
450
f09f3242
JW
451 * include/std/span (span): Reorder members and rename template
452 parameters to match declarations in the C++2a working paper.
453
f5b4dc38
JW
454 P2116R0 Remove tuple-like protocol support from fixed-extent span
455 * include/std/span (get, tuple_size, tuple_element): Remove.
456 * testsuite/23_containers/span/everything.cc: Remove checks for
457 tuple-like API.
458 * testsuite/23_containers/span/get_neg.cc: Remove.
459 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
460 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
461 * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
462
f3169941
PP
4632020-02-17 Patrick Palka <ppalka@redhat.com>
464
aa667c3f
PP
465 P2106R0 Alternative wording for GB315 and GB316
466 * include/bits/ranges_algo.h (in_fun_result): New.
467 (for_each_result, for_each_n_result): Change into an alias of
468 in_fun_result.
469 (in_in_result): New.
470 (mismatch_result): Change into an alias of in_in_result.
471 (copy_if_result): Change into an alias of in_out_result.
472 (swap_ranges_result): Change into an alias of in_in_result.
473 (unary_transform_result): Change into an alias of in_out_result.
474 (in_in_out_result): New.
475 (binary_transform_result): Change into an alias of in_in_out_result.
476 (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
477 remove_copy_result, unique_copy_result, reverse_copy_result,
478 rotate_copy_result, partial_sort_copy_result): Change into an alias of
479 in_out_result.
480 (in_out_out_result): New.
481 (partition_copy_result, merge_result): Change into an alias of
482 in_out_out_result.
483 (set_union_result, set_intersection_result): Change into an alias of
484 in_in_out_result.
485 (set_difference_result): Change into an alias of in_out_result.
486 (set_symmetric_difference): Change into an alias of in_in_out_result.
487 (min_max_result): New.
488 (minmax_result, minmax_element_result): Change into an alias of
489 min_max_result.
490 (in_found_result): New.
491 (next_permutation_result, prev_permutation_result): Change into an alias
492 of in_found_result.
493 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
494 Adjust following changes to next_permutation_result and
495 prev_permutation_result.
496 * include/bits/ranges_algobase.h (in_out_result): New.
497 (copy_result, move_result, move_backward_result, copy_backward_result,
498 copy_n_result): Change into an alias of in_out_result.
499 * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
500 uninitialized_copy_n_result, uninitialized_move_result,
501 uninitialized_move_n_result): Likewise.
502 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
503 structured bindings.
504 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
505
f3169941
PP
506 P1243R4 Rangify new algorithms
507 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
508 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
509 * testsuite/25_algorithms/clamp/constrained.cc: New test.
510 * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
511 * testsuite/25_algorithms/sample/constrained.cc: New test.
512
98cf2c26
JW
5132020-02-17 Jonathan Wakely <jwakely@redhat.com>
514
c5e1c1d3
JW
515 P1964R2 Wording for boolean-testable
516 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
517 (__adjacent_find_fn): Cast result of predicate to bool.
518 * include/std/concepts (__boolean): Remove.
519 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
520 new helper concepts.
521 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
522 (predicate): Use __boolean_testable instead of boolean.
523 * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
524 Likewise.
525
7ab36231
JW
526 P1970R2 Consistency for size() functions: Add ranges::ssize
527 * include/bits/range_access.h (_SSize, ssize): Define for C++20.
528 * testsuite/std/ranges/access/ssize.cc: New test.
529
9866abe3
JW
530 P1956R1 On the names of low-level bit manipulation functions
531 * include/bits/hashtable_policy.h: Update comment.
532 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
533 (ispow2, ceil2, floor2, log2p1): Likewise.
534 (__cpp_lib_int_pow2): Add feature test macro.
535 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
536 * include/std/memory (assume_aligned): Adjust use of ispow2.
537 * include/std/version (__cpp_lib_int_pow2): Add.
538 * libsupc++/new_opa.cc: Adjust use of __ispow2.
539 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
540 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
541 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
542 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
543 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
544 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
545 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
546 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
547 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
548 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
549 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
550 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
551
cfbc8fbb
JW
552 * include/std/charconv: Add comment.
553
9cd4eeef
JW
554 PR libstdc++/92546 (partial)
555 * include/bits/random.h (uniform_random_bit_generator): Move definition
556 to <bits/uniform_int_dist.h>.
557 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
558 of <bits/random.h>.
559 * include/bits/ranges_algobase.h: Do not include <cmath>.
560 * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
561 Move here.
562 * include/std/ranges: Do not include <limits>.
563 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
564
c03b53da
JW
565 PR libstdc++/92546 (partial)
566 * include/Makefile.am: Add new header.
567 * include/Makefile.in: Regenerate.
568 * include/bits/int_limits.h: New header.
569 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
570 numeric_limits with __detail::__int_limits.
571 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
572 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
573 Likewise.
574 * include/std/charconv (__to_chars_8, __from_chars_binary)
575 (__from_chars_alpha_to_num, from_chars): Likewise.
576 * include/std/memory_resource (polymorphic_allocator::allocate)
577 (polymorphic_allocator::allocate_object): Likewise.
578 * include/std/string_view (basic_string_view::_S_compare): Likewise.
579 * include/std/utility (in_range): Likewise.
580 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
581 extra error about incomplete type __int_limits<bool>.
582 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
583 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
584 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
585 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
586 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
587 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
588 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
589 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
590 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
591 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
592 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
593 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
594
4540ef78
JW
595 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
596 value for partial_ordering::unordered.
597
d6dfa3da
JW
598 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
599 const-qualified expression variations.
600 * include/std/concepts (copyable): Likewise.
601
98cf2c26
JW
602 * include/std/type_traits (__is_standard_integer): New helper trait.
603 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
604 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
605 * include/std/version (__cpp_lib_integer_comparison_functions): Define.
606 * testsuite/20_util/integer_comparisons/1.cc: New test.
607 * testsuite/20_util/integer_comparisons/2.cc: New test.
608 * testsuite/20_util/integer_comparisons/equal.cc: New test.
609 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
610 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
611 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
612 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
613 * testsuite/20_util/integer_comparisons/in_range.cc: New test.
614 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
615 * testsuite/20_util/integer_comparisons/less.cc: New test.
616 * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
617 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
618 * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
619 * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
620 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
621
93b8cfce
PP
6222020-02-16 Patrick Palka <ppalka@redhat.com>
623
624 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
625 Move code after an early exit constexpr if to under an else branch.
626 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
627
90b7eb65
PP
6282020-02-15 Patrick Palka <ppalka@redhat.com>
629
55992626
PP
630 * include/bits/ranges_algo.h: Adjust whitespace and formatting.
631 * include/bits/ranges_algobase.h: Likewise.
632 * include/bits/ranges_uninitialized.h: Likewise.
633
b40c57bd
PP
634 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
635 binary_search, copy_if, count, count_if, equal_range, find, find_end,
636 find_first_of, find_if, find_if_not, for_each, generate, generate_n,
637 includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
638 is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
639 lower_bound, make_heap, max, max_element, merge, min, min_element,
640 minmax, minmax_element, mismatch, next_permutation, none_of,
641 nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
642 partition_point, pop_heap, prev_permutation, push_heap, remove,
643 remove_copy, remove_copy_if, remove_if, replace, replace_copy,
644 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
645 search, search_n, set_difference, set_intersection,
646 set_symmetric_difference, set_union, shuffle, sort, sort_heap,
647 stable_partition, stable_sort, swap_ranges, transform, unique,
648 unique_copy, upper_bound): Convert into function objects.
649 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
650 fill, move_backward, copy_backward): Likewise.
651 * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
652 uninitialized_default_construct_n, uninitialized_value_construct,
653 uninitialized_value_construct_n, uninitialized_copy,
654 uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
655 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
656 destroy, destroy_n): Likewise.
657
90b7eb65
PP
658 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
659 (ranges::find_end): ... here.
660 (ranges::__lexicographical_compare): Fold into ...
661 (ranges::lexicographical_compare): ... here.
662 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
663 (ranges::equal): ... here.
664
55b00d14
JW
6652020-02-15 Jonathan Wakely <jwakely@redhat.com>
666
667 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
668 * include/std/deque: Likewise.
669 * include/std/forward_list: Likewise.
670 * include/std/list: Likewise.
671 * include/std/string: Likewise.
672 * include/std/vector: Likewise.
673 * include/std/version: Likewise.
674 * testsuite/23_containers/deque/erasure.cc: Test for new value.
675 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
676 * testsuite/23_containers/list/erasure.cc: Likewise.
677 * testsuite/23_containers/map/erasure.cc: Likewise.
678 * testsuite/23_containers/set/erasure.cc: Likewise.
679 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
680 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
681 * testsuite/23_containers/vector/erasure.cc: Likewise.
682
5b1d5885
JW
6832020-02-15 Jonathan Wakely <jwakely@redhat.com>
684
685 * include/bits/random.h (uniform_random_bit_generator): Require min()
686 and max() to be constant expressions and min() to be less than max().
687 * testsuite/26_numerics/random/concept.cc: Check additional cases.
688 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
689
90fc7b3c
PP
6902020-02-13 Patrick Palka <ppalka@redhat.com>
691
613c932f
PP
692 * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
693 * include/Makefile.in: Regenerate.
694 * include/bits/ranges_uninitialized.h: New header.
695 * include/std/memory: Include it.
696 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
697 test.
698 * .../uninitialized_copy/constrained.cc: New test.
699 * .../uninitialized_default_construct/constrained.cc: New test.
700 * .../uninitialized_fill/constrained.cc: New test.
701 * .../uninitialized_move/constrained.cc: New test.
702 * .../uninitialized_value_construct/constrained.cc: New test.
703
90fc7b3c
PP
704 * include/Makefile.am: Add bits/ranges_algobase.h
705 * include/Makefile.in: Regenerate.
706 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
707 existing #includes.
708 (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
709 __detail::__is_move_iterator, copy_result, move_result,
710 __equal, equal, copy_result, move_result, move_backward_result,
711 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
712 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
713 fill): Split out into ...
714 * bits/range_algobase.h: ... this new header.
715
99bbab9f
PP
7162020-02-12 Patrick Palka <ppalka@redhat.com>
717
718 LWG 3389 and LWG 3390
719 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
720 constructing the move_iterator with __i.
721 (counted_iterator::counted_iterator): Use std::move when initializing
722 M_current with __i.
723 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
724 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
725
02ce382c
SL
7262020-02-12 Sandra Loosemore <sandra@codesourcery.com>
727
728 PR libstdc++/79193
729 PR libstdc++/88999
730
731 * configure: Regenerated.
732
b32a3f32
FD
7332020-02-12 François Dumont <fdumont@gcc.gnu.org>
734
735 * include/bits/hashtable.h
736 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
737 missing std namespace qualification to forward call.
738
dcda050e
JW
7392020-02-09 Jonathan Wakely <jwakely@redhat.com>
740
38660e87
JW
741 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
742 comment.
743 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
744
97a7c229
JW
745 * include/std/ranges: Fix non-ASCII characters in comment.
746
dcda050e
JW
747 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
748 equality comparison to be valid and return bool.
749 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
750 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
751 type with ambiguous conversion to fundamental types.
752 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
753
d222d8ec
JW
7542020-02-07 Jonathan Wakely <jwakely@redhat.com>
755
c8dd2446
JW
756 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
757 Use remove_cvref_t.
758 (readable_traits): Rename to indirectly_readable_traits.
759 (readable): Rename to indirectly_readable.
760 (writable): Rename to indirectly_writable.
761 (__detail::__iter_exchange_move): Do not use remove_reference_t.
762 (indirectly_swappable): Adjust requires expression parameter types.
763 expression.
764 * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
765 (ranges::replace_if, ranges::generate_n, ranges::generate)
766 (ranges::remove): Use new name for writable.
767 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
768 Use new name for readable.
769 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
770 new name for readable_traits.
771 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
772 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
773 new definition of indirectly_readable.
774
d222d8ec
JW
775 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
776 to take parameters of common_iterator, instead of the common_iterator
777 type itself. Fix argument for __common_iter_has_arrow constraint.
778 (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
779
572992c8
JW
7802020-02-07 Jonathan Wakely <jwakely@redhat.com>
781
782 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
783 warning.
784 (basic_istream_view::_Iterator::operator++()): Add missing return.
785
cba9ef06
PP
7862020-02-07 Patrick Palka <ppalka@redhat.com>
787
a04f635d
PP
788 * include/bits/ranges_algo.h: Remove extraneous &&.
789
b7903d9f
PP
790 * include/std/ranges (ranges::__detail::__stream_extractable,
791 ranges::basic_istream_view, ranges::istream_view): Define.
792 * testsuite/std/ranges/istream_view: New test.
793
cba9ef06
PP
794 Implement C++20 range adaptors
795 * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
796 (subrange::_S_store_size): Mark as const instead of constexpr to
797 avoid what seems to be a bug in GCC.
798 (__detail::__box): Give it defaulted copy and move constructors.
55d4cbcb
PP
799 (ranges::views::_Single::operator()): Mark constexpr.
800 (ranges::views::_Iota::operator()): Mark constexpr.
cba9ef06 801 (__detail::Empty): Define.
55d4cbcb
PP
802 (ranges::views::__closure::_RangeAdaptor,
803 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
804 ranges::views::all, ranges::__detail::find_if,
805 ranges::__detail::find_if_not, ranges::__detail::mismatch,
806 ranges::detail::min, filter_view, ranges::views::filter, transform_view,
807 ranges::views::transform, take_view, ranges::views::take,
808 take_while_view, ranges::views::take_while, drop_view,
809 ranges::views::drop, join_view, ranges::views::join,
cba9ef06 810 __detail::require_constant, __detail::tiny_range, split_view,
55d4cbcb
PP
811 ranges::views::split, ranges::views::_Counted, ranges::views::counted,
812 common_view, ranges::views::common, reverse_view,
813 ranges::views::reverse,
814 ranges::views::__detail::__is_reversible_subrange,
815 ranges::views::__detail::__is_reverse_view, reverse_view,
816 ranges::views::reverse, __detail::__has_tuple_element, elements_view,
817 ranges::views::elements, ranges::views::keys, ranges::views::values):
818 Define.
819 (views): Alias for ranges::views.
820 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
821 tuple_element<1, ranges::subrange>): New partial specializations.
cba9ef06
PP
822 * testsuite/std/ranges/adaptors/all.cc: New test.
823 * testsuite/std/ranges/adaptors/common.cc: Likewise.
824 * testsuite/std/ranges/adaptors/counted.cc: Likewise.
825 * testsuite/std/ranges/adaptors/drop.cc: Likewise.
826 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
827 * testsuite/std/ranges/adaptors/elements.cc: Likewise.
828 * testsuite/std/ranges/adaptors/filter.cc: Likewise.
829 * testsuite/std/ranges/adaptors/join.cc: Likewise.
830 * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
831 * testsuite/std/ranges/adaptors/split.cc: Likewise.
832 * testsuite/std/ranges/adaptors/take.cc: Likewise.
833 * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
834 * testsuite/std/ranges/adaptors/transform.cc: Likewise.
835
5713834e
JW
8362020-02-07 Jonathan Wakely <jwakely@redhat.com>
837
0d57370c
JW
838 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
839 type of enumerations and comparison category types.
840 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
841 (__cmp_cat::_Ncmp::unordered): Change value to 2.
842 (partial_ordering::_M_value, weak_ordering::_M_value)
843 (strong_ordering::_M_value): Change type to __cmp_cat::type.
844 (partial_ordering::_M_is_ordered): Remove data member.
845 (partial_ordering): Use second bit of _M_value for unordered. Adjust
846 comparison operators.
847 (weak_ordering::operator partial_ordering): Simplify to remove
848 branches.
849 (operator<=>(unspecified, weak_ordering)): Likewise.
850 (strong_ordering::operator partial_ordering): Likewise.
851 (strong_ordering::operator weak_ordering): Likewise.
852 (operator<=>(unspecified, strong_ordering)): Likewise.
853 * testsuite/18_support/comparisons/categories/partialord.cc: New test.
854 * testsuite/18_support/comparisons/categories/strongord.cc: New test.
855 * testsuite/18_support/comparisons/categories/weakord.cc: New test.
856
5713834e
JW
857 * include/std/ranges (iota_view::_Iterator): Fix typo in name of
858 __cpp_lib_three_way_comparison macro and use deduced return type for
859 operator<=>.
860 * testsuite/std/ranges/iota/iterator.cc: New test.
861
bc464641
PP
8622020-02-07 Patrick Palka <ppalka@redhat.com>
863 Jonathan Wakely <jwakely@redhat.com>
864
865 Implement C++20 constrained algorithms
866 * include/Makefile.am: Add new header.
867 * include/Makefile.in: Regenerate.
868 * include/std/algorithm: Include <bits/ranges_algo.h>.
869 * include/bits/ranges_algo.h: New file.
870 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
871 * testsuite/25_algorithms/all_of/constrained.cc: New test.
872 * testsuite/25_algorithms/any_of/constrained.cc: New test.
873 * testsuite/25_algorithms/binary_search/constrained.cc: New test.
874 * testsuite/25_algorithms/copy/constrained.cc: New test.
875 * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
876 * testsuite/25_algorithms/copy_if/constrained.cc: New test.
877 * testsuite/25_algorithms/copy_n/constrained.cc: New test.
878 * testsuite/25_algorithms/count/constrained.cc: New test.
879 * testsuite/25_algorithms/count_if/constrained.cc: New test.
880 * testsuite/25_algorithms/equal/constrained.cc: New test.
881 * testsuite/25_algorithms/equal_range/constrained.cc: New test.
882 * testsuite/25_algorithms/fill/constrained.cc: New test.
883 * testsuite/25_algorithms/fill_n/constrained.cc: New test.
884 * testsuite/25_algorithms/find/constrained.cc: New test.
885 * testsuite/25_algorithms/find_end/constrained.cc: New test.
886 * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
887 * testsuite/25_algorithms/find_if/constrained.cc: New test.
888 * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
889 * testsuite/25_algorithms/for_each/constrained.cc: New test.
890 * testsuite/25_algorithms/generate/constrained.cc: New test.
891 * testsuite/25_algorithms/generate_n/constrained.cc: New test.
892 * testsuite/25_algorithms/heap/constrained.cc: New test.
893 * testsuite/25_algorithms/includes/constrained.cc: New test.
894 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
895 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
896 * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
897 * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
898 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
899 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
900 test.
901 * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
902 * testsuite/25_algorithms/max/constrained.cc: New test.
903 * testsuite/25_algorithms/max_element/constrained.cc: New test.
904 * testsuite/25_algorithms/merge/constrained.cc: New test.
905 * testsuite/25_algorithms/min/constrained.cc: New test.
906 * testsuite/25_algorithms/min_element/constrained.cc: New test.
907 * testsuite/25_algorithms/minmax/constrained.cc: New test.
908 * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
909 * testsuite/25_algorithms/mismatch/constrained.cc: New test.
910 * testsuite/25_algorithms/move/constrained.cc: New test.
911 * testsuite/25_algorithms/move_backward/constrained.cc: New test.
912 * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
913 * testsuite/25_algorithms/none_of/constrained.cc: New test.
914 * testsuite/25_algorithms/nth_element/constrained.cc: New test.
915 * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
916 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
917 * testsuite/25_algorithms/partition/constrained.cc: New test.
918 * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
919 * testsuite/25_algorithms/partition_point/constrained.cc: New test.
920 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
921 * testsuite/25_algorithms/remove/constrained.cc: New test.
922 * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
923 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
924 * testsuite/25_algorithms/remove_if/constrained.cc: New test.
925 * testsuite/25_algorithms/replace/constrained.cc: New test.
926 * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
927 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
928 * testsuite/25_algorithms/replace_if/constrained.cc: New test.
929 * testsuite/25_algorithms/reverse/constrained.cc: New test.
930 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
931 * testsuite/25_algorithms/rotate/constrained.cc: New test.
932 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
933 * testsuite/25_algorithms/search/constrained.cc: New test.
934 * testsuite/25_algorithms/search_n/constrained.cc: New test.
935 * testsuite/25_algorithms/set_difference/constrained.cc: New test.
936 * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
937 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
938 test.
939 * testsuite/25_algorithms/set_union/constrained.cc: New test.
940 * testsuite/25_algorithms/shuffle/constrained.cc: New test.
941 * testsuite/25_algorithms/sort/constrained.cc: New test.
942 * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
943 * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
944 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
945 * testsuite/25_algorithms/transform/constrained.cc: New test.
946 * testsuite/25_algorithms/unique/constrained.cc: New test.
947 * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
948 * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
949
d1aa7705
JW
9502020-02-06 Jonathan Wakely <jwakely@redhat.com>
951
bd630df0
JW
952 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
953 number in comment. Fix indentation.
954
d1aa7705
JW
955 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
956 redundant _GLIBCXX20_CONSTEXPR.
957
26eae9ac
JW
958 * include/std/ranges (viewable_range): Replace decay_t with
959 remove_cvref_t (LWG 3375).
960
269e8130
JW
9612020-02-05 Jonathan Wakely <jwakely@redhat.com>
962
963 * include/bits/iterator_concepts.h (iter_reference_t)
964 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
965 Remove workarounds for PR c++/67704.
966 * testsuite/24_iterators/aliases.cc: New test.
967
7db12d15
PP
9682020-02-05 Patrick Palka <ppalka@redhat.com>
969
970 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
971 when initializing _M_current.
972 (move_iterator::base): Split into two overloads differing in
973 ref-qualifiers as in P1207R4 for C++20.
974
9962493c
JW
9752020-02-04 Jonathan Wakely <jwakely@redhat.com>
976
9bc5bea1
JW
977 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
978 use.
979
9962493c
JW
980 PR libstdc++/93562
981 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
982 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
983 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
984
20fa702b
AB
9852020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
986
987 * configure: Regenerate.
988
6e5a1963
PP
9892020-01-31 Patrick Palka <ppalka@redhat.com>
990
991 * testsuite/24_iterators/range_operations/distance.cc: Do not assume
992 test_range::end() returns the same type as test_range::begin().
993 * testsuite/24_iterators/range_operations/next.cc: Likewise.
994 * testsuite/24_iterators/range_operations/prev.cc: Likewise.
995 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
996 Always return a sentinel<I>.
997
5cd2e126
JW
9982020-01-29 Jonathan Wakely <jwakely@redhat.com>
999
0a8f4feb
JW
1000 PR libstdc++/92895
1001 * include/std/stop_token (stop_token::stop_possible()): Call new
1002 _M_stop_possible() function.
1003 (stop_token::stop_requested()): Do not use stop_possible().
1004 (stop_token::binary_semaphore): New class, as temporary stand-in for
1005 std::binary_semaphore.
1006 (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
1007 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
1008 New data members for symchronization with stop_callback destruction.
1009 (stop_token::_Stop_cb::_Stop_cb): Make non-template.
1010 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
1011 Remove.
1012 (stop_token::_Stop_cb::_M_run): New member function.
1013 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
1014 Remove.
1015 (stop_token::_Stop_state::_M_owners): New data member to track
1016 reference count for ownership.
1017 (stop_token::_Stop_state::_M_value): New data member combining a
1018 spinlock, the stop requested flag, and the reference count for
1019 associated stop_source objects.
1020 (stop_token::_Stop_state::_M_requester): New data member for
1021 synchronization with stop_callback destruction.
1022 (stop_token::_Stop_state::_M_stop_possible()): New member function.
1023 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
1024 of _M_value.
1025 (stop_token::_Stop_state::_M_add_owner)
1026 (stop_token::_Stop_state::_M_release_ownership)
1027 (stop_token::_Stop_state::_M_add_ssrc)
1028 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
1029 updating reference counts.
1030 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
1031 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
1032 (stop_token::_Stop_state::_M_try_lock)
1033 (stop_token::_Stop_state::_M_try_lock_and_stop)
1034 (stop_token::_Stop_state::_M_do_try_lock): New member functions for
1035 managing spinlock.
1036 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
1037 read and update state. Release lock while running callbacks. Use new
1038 data members to synchronize with callback destruction.
1039 (stop_token::_Stop_state::_M_remove_callback): Likewise.
1040 (stop_token::_Stop_state::_M_register_callback): Use atomic operations
1041 to read and update state.
1042 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
1043 replacing shared_ptr.
1044 (stop_source::stop_source(const stop_source&)): Update reference count.
1045 (stop_source::operator=(const stop_source&)): Likewise.
1046 (stop_source::~stop_source()): Likewise.
1047 (stop_source::stop_source(stop_source&&)): Define as defaulted.
1048 (stop_source::operator=(stop_source&&)): Establish postcondition on
1049 parameter.
1050 (stop_callback): Enforce preconditions on template parameter. Replace
1051 base class with data member of new _Cb_impl type.
1052 (stop_callback::stop_callback(const stop_token&, Cb&&))
1053 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
1054 (stop_callback::_Cb_impl): New type wrapping _Callback member and
1055 defining the _S_execute member function.
1056 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
1057 test.
1058 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
1059 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
1060 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
1061 New test.
1062 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
1063 test.
1064 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
1065 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
1066 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
1067 test.
1068
f214ffb3
JW
1069 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
1070 three_way_comparable_with.
1071 (__detail::__3way_cmp_with): Remove workaround for fixed bug.
1072 (compare_three_way::operator()): Remove redundant constraint from
1073 requires-clause.
1074 (__detail::_Synth3way::operator()): Use three_way_comparable_with
1075 instead of workaround.
1076 * testsuite/18_support/comparisons/object/93479.cc: Prune extra
1077 output due to simplified constraints on compare_three_way::operator().
1078
83b02010
JW
1079 PR libstdc++/93479
1080 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
1081 * testsuite/18_support/comparisons/object/93479.cc: New test.
1082
5cd2e126
JW
1083 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
1084 returns the same type as test_range::begin(). Add comments.
1085 * testsuite/std/ranges/access/rbegin.cc: Likewise.
1086 * testsuite/std/ranges/access/rend.cc: Likewise.
1087 * testsuite/std/ranges/range.cc: Do not assume the sentinel for
1088 test_range is the same as its iterator type.
1089 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
1090 operator- overloads to satisfy sized_sentinel_for when the iterator
1091 satisfies random_access_iterator.
1092
759812fd
JW
10932020-01-28 Jonathan Wakely <jwakely@redhat.com>
1094
72a9fd20
JW
1095 PR libstdc++/93470
1096 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
1097 static assertion to object types.
1098
759812fd
JW
1099 PR libstdc++/93325
1100 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
1101 clock_gettime instead of explicit glibc version check.
1102 * configure: Regenerate.
1103
a5d81aaa
JW
11042020-01-28 Martin Liska <mliska@suse.cz>
1105
1106 PR libstdc++/93478
1107 * include/std/atomic: Fix typo.
1108 * include/std/optional: Likewise.
1109
11102020-01-27 Andrew Burgess <andrew.burgess@embecosm.com>
1111
1112 * configure: Regenerate.
1113
389cd88c
JW
11142020-01-27 Jonathan Wakely <jwakely@redhat.com>
1115
1116 PR libstdc++/93426
1117 * include/std/span (span): Fix deduction guide.
1118 * testsuite/23_containers/span/deduction.cc: New test.
1119
482eeff5
JW
11202020-01-24 Jonathan Wakely <jwakely@redhat.com>
1121
1122 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
1123 (__cmp_cat::_Ord::equivalent): Add enumerator.
1124 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
1125 and greater.
1126 (partial_ordering, weak_ordering, strong_ordering): Remove
1127 constructors taking __cmp_cat::_Eq parameters. Use renamed
1128 enumerators.
1129
e8e66971
MR
11302020-01-24 Maciej W. Rozycki <macro@wdc.com>
1131
1132 * acinclude.m4: Handle `--with-toolexeclibdir='.
1133 * Makefile.in: Regenerate.
1134 * aclocal.m4: Regenerate.
1135 * configure: Regenerate.
1136 * doc/Makefile.in: Regenerate.
1137 * include/Makefile.in: Regenerate.
1138 * libsupc++/Makefile.in: Regenerate.
1139 * po/Makefile.in: Regenerate.
1140 * python/Makefile.in: Regenerate.
1141 * src/Makefile.in: Regenerate.
1142 * src/c++11/Makefile.in: Regenerate.
1143 * src/c++17/Makefile.in: Regenerate.
1144 * src/c++98/Makefile.in: Regenerate.
1145 * src/filesystem/Makefile.in: Regenerate.
1146 * testsuite/Makefile.in: Regenerate.
1147
7a900bce
AO
11482020-01-23 Alexandre Oliva <oliva@adacore.com>
1149
f9e84b31
AO
1150 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
1151 * configure: Rebuild.
1152
7a900bce
AO
1153 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
1154
04681fca
JW
11552020-01-23 Jonathan Wakely <jwakely@redhat.com>
1156
1157 PR libstdc++/91947
1158 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
1159 rule.
1160 * include/Makefile.in: Regenerate.
1161
c784f162
JW
11622020-01-20 Jonathan Wakely <jwakely@redhat.com>
1163
1164 * doc/xml/faq.xml: Fix grammar.
1165 * doc/xml/manual/appendix_contributing.xml: Improve instructions.
1166 * doc/xml/manual/spine.xml: Update copyright years.
1167 * doc/html/*: Regenerate.
1168
f4d83eba
ER
11692020-01-19 Eric S. Raymond <esr@thyrsus.com>
1170
1171 * doc/xml/faq.xml: Update for SVN -> Git transition.
1172 * doc/xml/manual/appendix_contributing.xml: Likewise.
1173 * doc/xml/manual/status_cxx1998.xml: Likewise.
1174 * doc/xml/manual/status_cxx2011.xml: Likewise.
1175 * doc/xml/manual/status_cxx2014.xml: Likewise.
1176 * doc/xml/manual/status_cxx2017.xml: Likewise.
1177 * doc/xml/manual/status_cxx2020.xml: Likewise.
1178 * doc/xml/manual/status_cxxtr1.xml: Likewise.
1179 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
1180
49789fd0
IS
11812020-01-18 Iain Sandoe <iain@sandoe.co.uk>
1182
1183 * include/Makefile.am: Add coroutine to the std set.
1184 * include/Makefile.in: Regenerated.
1185 * include/std/coroutine: New file.
1186
0ba6a850
JW
11872020-01-17 Jonathan Wakely <jwakely@redhat.com>
1188
1189 PR libstdc++/92376
1190 * include/bits/c++config: Only do PSTL config when the header is
1191 present, to fix freestanding.
1192 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
1193 functions if they were detected by configure.
1194
98d56ea8
JW
11952020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de>
1196 Matthew Bauer <mjbauer95@gmail.com>
1197 Jonathan Wakely <jwakely@redhat.com>
1198
1199 PR bootstrap/64271 (partial)
1200 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
1201 to unsigned short.
1202 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
1203 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
1204 definitions with NetBSD upstream.
1205 (ctype_base::blank): Use _CTYPE_BL.
1206 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
1207 Declaration.
1208 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
1209 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
1210 parameters to unsigned char.
1211 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
1212
d9165389
FD
12132020-01-16 François Dumont <fdumont@gcc.gnu.org>
1214
1215 PR libstdc++/91263
1216 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
1217 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
1218 (_Equality_base): Remove.
1219 (_Equality<>::_M_equal): Review implementation. Use
1220 std::is_permutation.
1221 * testsuite/23_containers/unordered_multiset/operators/1.cc
1222 (Hash, Equal, test02, test03): New.
1223 * testsuite/23_containers/unordered_set/operators/1.cc
1224 (Hash, Equal, test02, test03): New.
1225
2a0f6c61
JW
12262020-01-15 Jonathan Wakely <jwakely@redhat.com>
1227
1228 PR libstdc++/93267
1229 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
1230 Move here from <bits/range_access.h> and define using __int128 when
1231 available.
1232 (__is_integer_like, __is_signed_integer_like): Move here from
1233 <bits/range_access.h>.
1234 (weakly_incrementable): Use __is_signed_integer_like.
1235 * include/bits/range_access.h (__max_diff_type, __max_size_type)
1236 (__is_integer_like, __is_signed_integer_like): Move to
1237 <bits/iterator_concepts.h>.
1238 (__make_unsigned_like_t): Move here from <ranges>.
1239 * include/std/ranges (__make_unsigned_like_t): Move to
1240 <bits/range_access.h>.
1241 (iota_view): Replace using-directive with using-declarations.
1242 * testsuite/std/ranges/iota/93267.cc: New test.
1243 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
1244
e4379a93
JW
12452020-01-13 Jonathan Wakely <jwakely@redhat.com>
1246
fe7cc34f
JW
1247 PR libstdc++/93244
1248 * include/bits/fs_path.h (path::generic_string<C,A>)
1249 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
1250 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
1251 root-dir is converted to forward slash in generic pathname.
1252 * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
1253 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
1254
e4379a93
JW
1255 PR libstdc++/58605
1256 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
1257 Define.
1258 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
1259 (__atomic_float): Add default member initializer for C++20.
1260 * include/std/atomic (atomic): Likewise.
1261 (atomic::atomic()): Remove noexcept-specifier on default constructor.
1262 * include/std/version (__cpp_lib_atomic_value_initialization): Define.
1263 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
1264 number.
1265 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
1266 * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
1267 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
1268 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
1269 expected result for is_trivially_default_constructible.
1270 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
1271 * testsuite/29_atomics/atomic_float/value_init.cc: New test.
1272 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
1273 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
1274 * testsuite/29_atomics/atomic_integral/cons/value_init.cc
1275 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
1276 expected results for is_trivially_default_constructible.
1277 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
1278 new test generator.
1279
7918cb93
JW
12802020-01-10 Jonathan Wakely <jwakely@redhat.com>
1281
68be73fc
JW
1282 * testsuite/util/testsuite_iterators.h: Improve comment.
1283
78f02e80
JW
1284 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
1285 initialization syntax.
1286
7918cb93
JW
1287 PR libstdc++/92285
1288 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
1289 of base class independent of __cplusplus value.
1290 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
1291 type defined in the base class
1292 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
1293 * testsuite/24_iterators/istreambuf_iterator/requirements/
1294 base_classes.cc: Adjust expected base class for C++98.
1295
acd43917
OH
12962020-01-09 Olivier Hainque <hainque@adacore.com>
1297
1298 * doc/xml/manual/appendix_contributing.xml: Document _C2
1299 as a reserved identifier, by VxWorks.
1300 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
1301 * include/bits/stl_multimap.h: Likewise.
1302
caa39b2e
JW
13032020-01-09 Jonathan Wakely <jwakely@redhat.com>
1304
1a788638
JW
1305 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
1306 (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
1307 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
1308 partial specialization to disambiguate the two constrained
1309 specializations.
1310
caa39b2e
JW
1311 * include/experimental/type_traits (experimental::is_pod_v): Disable
1312 -Wdeprecated-declarations warnings around reference to std::is_pod.
1313 * include/std/type_traits (is_pod_v): Likewise.
1314 * testsuite/18_support/max_align_t/requirements/2.cc: Also check
1315 is_standard_layout and is_trivial. Do not check is_pod for C++20.
1316 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
1317 Add -Wno-deprecated for C++20.
1318 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
1319 * testsuite/20_util/is_pod/value.cc: Likewise.
1320 * testsuite/experimental/type_traits/value.cc: Likewise.
1321
1a6c5064
JTM
13222020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
1323
1324 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
1325 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
1326 * testuite/20_util/is_pod/deprecated-2a.cc: New test.
1327
d574c8aa
JW
13282020-01-09 Jonathan Wakely <jwakely@redhat.com>
1329
160e95dc
JW
1330 PR libstdc++/93205
1331 * include/bits/random.h (operator>>): Check stream operation succeeds.
1332 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
1333 typedefs.
1334 (operator>>): Remove redundant __istream_type typedefs. Check stream
1335 operations succeed.
1336 (__extract_params): New function to fill a vector from a stream.
1337 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
1338
d574c8aa
JW
1339 PR libstdc++/93208
1340 * config/abi/pre/gnu.ver: Add new exports.
1341 * include/std/memory_resource (memory_resource::~memory_resource()):
1342 Do not define inline.
1343 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
1344 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
1345 Define.
1346 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
1347 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
1348
b9c84e95
FD
13492020-01-09 François Dumont <fdumont@gcc.gnu.org>
1350
1351 PR libstdc++/92124
1352 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
1353 template alias.
1354 (_Hashtable<>::__fwd_value_for): New.
1355 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
1356 parameter.
1357 (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
1358 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
1359 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
1360 with std::move.
1361 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
1362 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
1363 Adapt.
1364 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
1365 Adapt.
1366 * testsuite/23_containers/unordered_set/92124.cc: New.
1367
fff148b7
JW
13682020-01-08 Jonathan Wakely <jwakely@redhat.com>
1369
1370 PR libstdc++/93201
1371 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
1372 detailed error reporting for remove_all. Check result of recursive
1373 call before incrementing iterator.
1374 (remove_all(const path&), remove_all(const path&, error_code&)): Use
1375 do_remove_all.
1376 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
1377 result of recursive call before incrementing iterator.
1378 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
1379 are reported correctly.
1380 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
1381
9e3c1eb7
TR
13822020-01-07 Thomas Rodgers <trodgers@redhat.com>
1383
1384 * include/std/condition_variable
1385 (condition_variable_any::wait_on): Rename to match current draft
1386 standard.
1387 (condition_variable_any::wait_on_until): Likewise.
1388 (condition_variable_any::wait_on_for): Likewise.
1389 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
1390 Adjust tests to account for renamed methods.
1391
6af8819b
FD
13922020-01-07 François Dumont <fdumont@gcc.gnu.org>
1393
1394 PR libstdc++/92124
1395 * include/bits/stl_tree.h
1396 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
1397 std::move_if_noexcept by std::move.
1398 * testsuite/23_containers/map/92124.cc: New.
1399 * testsuite/23_containers/set/92124.cc: New.
1400
f31a99f7
JW
14012020-01-06 Jonathan Wakely <jwakely@redhat.com>
1402
a4a1f965
JW
1403 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
1404 (stop_source): Likewise (LWG 3362).
1405 * testsuite/30_threads/stop_token/stop_source.cc: Test equality
1406 comparisons.
1407
f31a99f7
JW
1408 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
1409 (lexicographical_compare_three_way): Do not depend on
1410 __cpp_lib_concepts.
1411 * include/std/version (__cpp_lib_three_way_comparison): Only define
1412 when __cpp_lib_concepts is defined.
1413 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
1414
b4e70137
JW
14152020-01-03 Jonathan Wakely <jwakely@redhat.com>
1416
1417 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
1418 Only define four-argument overload when __cpp_lib_concepts is defined.
1419
a8497ec6
JDA
14202020-01-01 John David Anglin <danglin@gcc.gnu.org>
1421
1422 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
1423
8d9254fc 14242020-01-01 Jakub Jelinek <jakub@redhat.com>
5624e564
JJ
1425
1426 Update copyright years.
b4df5e92 1427\f
8d9254fc 1428Copyright (C) 2020 Free Software Foundation, Inc.
b4df5e92
JW
1429
1430Copying and distribution of this file, with or without modification,
1431are permitted in any medium without royalty provided the copyright
1432notice and this notice are preserved.