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