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