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