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