PR libstdc++/86874 fix std::variant::swap regression
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob50a01efd77f3200a0280f1494b929329f4ba1ca5
1 2018-08-07  Jonathan Wakely  <jwakely@redhat.com>
3         PR libstdc++/86874
4         * include/std/variant (_Copy_ctor_base::_M_destructive_move): Define
5         here instead of in _Move_assign_base.
6         (_Copy_ctor_base<true, _Types...>::_M_destructive_move): Define.
7         (_Copy_assign_base::operator=): Use _M_destructive_move when changing
8         the contained value to another alternative.
9         (_Move_assign_base::operator=): Likewise.
10         (_Move_assign_base::_M_destructive_move): Remove.
11         * testsuite/20_util/variant/86874.cc: New test.
13         PR libstdc++/86861
14         * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] (aligned_alloc):
15         Replace macro with inline function.
16         [__sun]: Increase alignment to meet memalign precondition.
17         [!HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN]
18         (aligned_alloc): Move check for valid alignment to operator new.
19         Remove redundant check for non-zero size, it's enforced by the caller.
20         (operator new): Move check for valid alignment here. Use
21         __builtin_expect on check for zero size.
23         * config/abi/pre/gnu.ver: Export monotonic_buffer_resource members.
24         * include/std/memory_resource (monotonic_buffer_resource::release):
25         Call _M_release_buffers to free buffers.
26         (monotonic_buffer_resource::do_allocate): Call _M_new_buffer to
27         allocate a new buffer from upstream.
28         (monotonic_buffer_resource::_M_new_buffer): Declare.
29         (monotonic_buffer_resource::_M_release_buffers): Declare.
30         (monotonic_buffer_resource::_Chunk): Replace definition with
31         declaration as opaque type.
32         * src/c++17/memory_resource.cc (monotonic_buffer_resource::_Chunk):
33         Define.
34         (monotonic_buffer_resource::_M_new_buffer): Define.
35         (monotonic_buffer_resource::_M_release_buffers): Define.
37 2018-08-05  François Dumont  <fdumont@gcc.gnu.org>
39         * include/bits/stl_iterator.h: Fix comment.
41 2018-08-03  Jonathan Wakely  <jwakely@redhat.com>
43         * src/c++11/system_error.cc
44         (system_error_category::default_error_condition): Add workaround for
45         ENOTEMPTY and EEXIST having the same value on AIX.
46         * testsuite/19_diagnostics/error_category/system_category.cc: Add
47         extra testcases for EDOM, EILSEQ, ERANGE, EEXIST and ENOTEMPTY.
49 2018-08-01  Jonathan Wakely  <jwakely@redhat.com>
51         * configure: Regenerate.
52         * configure.ac: Add -D_GLIBCXX_ASSERTIONS to default DEBUG_FLAGS.
53         * src/c++11/futex.cc: Use __glibcxx_assert instead of
54         _GLIBCXX_DEBUG_ASSERT.
56 2018-08-01  Mike Crowe  <mac@mcrowe.com>
58         * include/std/condition_variable (wait_for): Use steady_clock.
60 2018-08-01  Mike Crowe  <mac@mcrowe.com>
62         * include/std/condition_variable (wait_until): Only report timeout
63         if we really have timed out when measured against the
64         caller-supplied clock.
65         * testsuite/30_threads/condition_variable/members/2.cc: Add test
66         case to confirm above behaviour.
68 2018-08-01  Jonathan Wakely  <jwakely@redhat.com>
70         PR libstdc++/60555
71         * src/c++11/system_error.cc
72         (system_error_category::default_error_condition): New override to
73         check for POSIX errno values.
74         * testsuite/19_diagnostics/error_category/generic_category.cc: New
75         * testsuite/19_diagnostics/error_category/system_category.cc: New
76         test.
78 2018-07-31  Jonathan Wakely  <jwakely@redhat.com>
80         PR libstdc++/86751
81         * include/bits/stl_pair.h (__pair_base): New class with deleted copy
82         assignment operator.
83         (pair): Derive from __pair_base.
84         (pair::operator=): Remove deleted overload.
85         * python/libstdcxx/v6/printers.py (StdPairPrinter): New pretty printer
86         so that new base class isn't shown in GDB.
87         * testsuite/20_util/pair/86751.cc: New test.
88         * testsuite/20_util/pair/ref_assign.cc: New test.
90         * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
91         (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Move definitions here.
92         (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Likewise. Use !__is_identifier
93         instead of __has_builtin.
94         * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
95         (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Remove definitions from here.
96         * include/std/version [!_GLIBCXX_HAS_GTHREADS]
97         (__cpp_lib_shared_timed_mutex, __cpp_lib_scoped_lock)
98         (__cpp_lib_shared_mutex): Don't define when Gthreads not in use.
99         [!_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP]
100         (__cpp_lib_has_unique_object_representations): Don't define when
101         builtin not available.
102         [!_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE] (__cpp_lib_is_aggregate):
103         Likewise.
104         [!_GLIBCXX_HAVE_BUILTIN_LAUNDER] (__cpp_lib_launder): Likewise.
105         * libsupc++/new (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Remove definition
106         from here.
108         * doc/xml/manual/test.xml: Improve documentation on writing tests for
109         newer standards.
110         * doc/xml/manual/using.xml: Document all headers for C++11 and later.
111         * doc/html/*: Regenerate.
113         * include/ext/pointer.h [__cplusplus >= 201103L]
114         (_Pointer_adapter::operator bool): Add explicit conversion operator
115         to replace safe bool idiom.
117 2018-07-30  Jonathan Wakely  <jwakely@redhat.com>
119         PR libstdc++/86734
120         * include/bits/stl_iterator.h (reverse_iterator::operator->): Call
121         _S_to_pointer (LWG 1052, LWG 2118).
122         (reverse_iterator::_S_to_pointer): Define overloaded helper functions.
123         * testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
124         * testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.
126         * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
127         workaround for aligned_alloc bug on AIX.
128         * testsuite/18_support/new_aligned.cc: New test.
130 2018-07-26  Marek Polacek  <polacek@redhat.com>
132         * testsuite/30_threads/condition_variable_any/cond.cc: New.
134 2018-07-26  Marek Polacek  <polacek@redhat.com>
136         * src/c++98/locale_init.cc: Fix #ifdef condition.
138 2018-07-26  Jonathan Wakely  <jwakely@redhat.com>
140         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add
141         dg-require-cstdint directive.
142         * testsuite/20_util/allocator/overaligned.cc: Likewise.
143         * testsuite/20_util/any/cons/aligned.cc: Likewise.
144         * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise.
145         * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise.
146         * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
147         Likewise.
148         * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
149         * testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
150         * testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
151         * testsuite/25_algorithms/make_heap/complexity.cc: Likewise.
152         * testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and
153         random_device effective-target.
154         * testsuite/25_algorithms/push_heap/complexity.cc: Likewise.
155         * testsuite/25_algorithms/sample/1.cc: Require cstdint.
156         * testsuite/25_algorithms/sample/2.cc: Likewise.
157         * testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint
158         and random_device.
159         * testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
160         cstdint.
161         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
162         Likewise.
163         * testsuite/26_numerics/random/discard_block_engine/requirements/
164         constexpr_data.cc: Likewise.
165         * testsuite/26_numerics/random/discard_block_engine/requirements/
166         constexpr_functions.cc: Likewise.
167         * testsuite/26_numerics/random/independent_bits_engine/requirements/
168         constexpr_functions.cc: Likewise.
169         * testsuite/26_numerics/random/linear_congruential_engine/requirements/
170         constexpr_data.cc: Likewise.
171         * testsuite/26_numerics/random/linear_congruential_engine/requirements/
172         constexpr_functions.cc: Likewise.
173         * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
174         constexpr_data.cc: Likewise.
175         * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
176         constexpr_functions.cc: Likewise.
177         * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
178         * testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise.
179         * testsuite/26_numerics/random/shuffle_order_engine/requirements/
180         constexpr_data.cc: Add dg-require-cstdint directive.
181         * testsuite/26_numerics/random/shuffle_order_engine/requirements/
182         constexpr_functions.cc: Likewise.
183         * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
184         constexpr_data.cc: Likewise.
185         * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
186         constexpr_functions.cc: Likewise.
187         * testsuite/26_numerics/random/uniform_real_distribution/operators/
188         64351.cc: Likewise.
189         * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise.
190         * testsuite/experimental/algorithm/sample-2.cc: Likewise.
191         * testsuite/experimental/algorithm/sample.cc: Likewise.
192         * testsuite/experimental/algorithm/search.cc: Likewise.
193         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
194         * testsuite/experimental/any/cons/aligned.cc: Likewise.
195         * testsuite/experimental/memory_resource/new_delete_resource.cc:
196         Likewise.
197         * testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise.
198         * testsuite/experimental/random/randint.cc: Likewise.
199         * testsuite/experimental/source_location/1.cc: Likewise.
200         * testsuite/ext/bitmap_allocator/overaligned.cc: Likewise.
201         * testsuite/ext/malloc_allocator/overaligned.cc: Likewise.
202         * testsuite/ext/mt_allocator/overaligned.cc: Likewise.
203         * testsuite/ext/new_allocator/overaligned.cc: Likewise.
204         * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
205         * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
206         * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
207         * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
208         * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
209         * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
210         * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
211         * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
212         * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
213         * testsuite/ext/pool_allocator/overaligned.cc: Likewise.
214         * testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
215         * testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
216         * testsuite/ext/throw_allocator/check_delete.cc: Likewise.
217         * testsuite/ext/throw_allocator/check_new.cc: Likewise.
218         * testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
219         * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
220         * testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
221         * testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
222         * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
224         * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
225         * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
226         * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
227         * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
228         Likewise.
229         * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
230         * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
231         * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
232         Likewise.
233         * testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
234         Likewise.
235         * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
236         Likewise.
237         * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
238         * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
239         * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
240         * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
241         * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
242         * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
243         Likewise.
244         * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
245         Likewise.
246         * testsuite/30_threads/recursive_timed_mutex/dest/
247         destructor_locked.cc: Likewise.
248         * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
249         * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
250         * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
251         Likewise.
252         * testsuite/30_threads/recursive_timed_mutex/native_handle/
253         typesizes.cc: Likewise.
254         * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
255         Likewise.
256         * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
257         Likewise.
258         * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
259         Likewise.
260         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
261         Likewise.
262         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
263         Likewise.
264         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
265         Likewise.
266         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
267         Likewise.
268         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
269         Likewise.
270         * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
271         * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
272         * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
273         * testsuite/30_threads/scoped_lock/requirements/
274         explicit_instantiation.cc: Likewise.
275         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
276         * testsuite/30_threads/shared_future/cons/assign.cc: Likewise.
277         * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
278         * testsuite/30_threads/shared_future/cons/copy.cc: Likewise.
279         * testsuite/30_threads/shared_future/cons/default.cc: Likewise.
280         * testsuite/30_threads/shared_future/cons/move.cc: Likewise.
281         * testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise.
282         * testsuite/30_threads/shared_future/members/45133.cc: Likewise.
283         * testsuite/30_threads/shared_future/members/get.cc: Likewise.
284         * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
285         * testsuite/30_threads/shared_future/members/valid.cc: Likewise.
286         * testsuite/30_threads/shared_future/members/wait.cc: Likewise.
287         * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
288         * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
289         * testsuite/30_threads/shared_future/requirements/
290         explicit_instantiation.cc: Likewise.
291         * testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
292         * testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
293         * testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
294         * testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
295         * testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
296         * testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
297         * testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
298         * testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
299         * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
300         * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
301         * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
302         * testsuite/30_threads/shared_lock/requirements/
303         explicit_instantiation.cc: Likewise.
304         * testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise.
305         * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
306         * testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise.
307         * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
308         * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
309         Likewise.
310         * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
311         * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
312         * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
313         * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
314         * testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc: Likewise.
315         * testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc: Likewise.
316         * testsuite/30_threads/shared_timed_mutex/requirements/
317         standard_layout.cc: Likewise.
318         * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
319         * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
320         * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
321         * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
322         * testsuite/30_threads/this_thread/1.cc: Likewise.
323         * testsuite/30_threads/this_thread/2.cc: Likewise.
324         * testsuite/30_threads/this_thread/3.cc: Likewise.
325         * testsuite/30_threads/this_thread/4.cc: Likewise.
326         * testsuite/30_threads/this_thread/58038.cc: Likewise.
327         * testsuite/30_threads/thread/70503.cc: Likewise.
328         * testsuite/30_threads/thread/84532.cc: Likewise.
329         * testsuite/30_threads/thread/adl.cc: Likewise.
330         * testsuite/30_threads/thread/cons/1.cc: Likewise.
331         * testsuite/30_threads/thread/cons/2.cc: Likewise.
332         * testsuite/30_threads/thread/cons/3.cc: Likewise.
333         * testsuite/30_threads/thread/cons/4.cc: Likewise.
334         * testsuite/30_threads/thread/cons/49668.cc: Likewise.
335         * testsuite/30_threads/thread/cons/5.cc: Likewise.
336         * testsuite/30_threads/thread/cons/6.cc: Likewise.
337         * testsuite/30_threads/thread/cons/7.cc: Likewise.
338         * testsuite/30_threads/thread/cons/8.cc: Likewise.
339         * testsuite/30_threads/thread/cons/84535.cc: Likewise.
340         * testsuite/30_threads/thread/cons/9.cc: Likewise.
341         * testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
342         * testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
343         * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
344         * testsuite/30_threads/thread/cons/moveable.cc: Likewise.
345         * testsuite/30_threads/thread/cons/terminate.cc: Likewise.
346         * testsuite/30_threads/thread/id/operators.cc: Likewise.
347         * testsuite/30_threads/thread/members/1.cc: Likewise.
348         * testsuite/30_threads/thread/members/2.cc: Likewise.
349         * testsuite/30_threads/thread/members/3.cc: Likewise.
350         * testsuite/30_threads/thread/members/4.cc: Likewise.
351         * testsuite/30_threads/thread/members/5.cc: Likewise.
352         * testsuite/30_threads/thread/members/hardware_concurrency.cc:
353         Likewise.
354         * testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
355         * testsuite/30_threads/thread/swap/1.cc: Likewise.
356         * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
357         * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
358         * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
359         * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
360         * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
361         * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
362         * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
363         Likewise.
364         * testsuite/30_threads/timed_mutex/requirements/
365         standard_layout.cc: Likewise.
366         * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
367         * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
368         * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
369         * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
370         * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
371         * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
372         * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
373         * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
374         * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
375         * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
376         * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
377         * testsuite/30_threads/try_lock/1.cc: Likewise.
378         * testsuite/30_threads/try_lock/2.cc: Likewise.
379         * testsuite/30_threads/try_lock/3.cc: Likewise.
380         * testsuite/30_threads/try_lock/4.cc: Likewise.
381         * testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
382         * testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
383         * testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
384         * testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
385         * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
386         * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
387         * testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
388         * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
389         * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
390         * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
391         * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
392         * testsuite/30_threads/unique_lock/requirements/
393         explicit_instantiation.cc: Likewise.
394         * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.
396         * testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint
397         directive.
398         * testsuite/30_threads/async/49668.cc: Likewise.
399         * testsuite/30_threads/async/54297.cc: Likewise.
400         * testsuite/30_threads/async/84532.cc: Likewise.
401         * testsuite/30_threads/async/any.cc: Likewise.
402         * testsuite/30_threads/async/async.cc: Likewise.
403         * testsuite/30_threads/async/except.cc: Likewise.
404         * testsuite/30_threads/async/forced_unwind.cc: Likewise.
405         * testsuite/30_threads/async/launch.cc: Likewise.
406         * testsuite/30_threads/async/lwg2021.cc: Likewise.
407         * testsuite/30_threads/async/sync.cc: Likewise.
408         * testsuite/30_threads/call_once/39909.cc: Likewise.
409         * testsuite/30_threads/call_once/49668.cc: Likewise.
410         * testsuite/30_threads/call_once/60497.cc: Likewise.
411         * testsuite/30_threads/call_once/call_once1.cc: Likewise.
412         * testsuite/30_threads/call_once/constexpr.cc: Likewise.
413         * testsuite/30_threads/call_once/dr2442.cc: Likewise.
414         * testsuite/30_threads/call_once/once_flag.cc: Likewise.
415         * testsuite/30_threads/condition_variable/54185.cc: Likewise.
416         * testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
417         * testsuite/30_threads/condition_variable/cons/assign_neg.cc:
418         Likewise.
419         * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
420         * testsuite/30_threads/condition_variable/members/1.cc: Likewise.
421         * testsuite/30_threads/condition_variable/members/2.cc: Likewise.
422         * testsuite/30_threads/condition_variable/members/3.cc: Likewise.
423         * testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
424         * testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
425         * testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
426         Likewise.
427         * testsuite/30_threads/condition_variable/requirements/
428         standard_layout.cc: Likewise.
429         * testsuite/30_threads/condition_variable/requirements/typedefs.cc:
430         * Likewise.
431         * testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
432         * testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
433         * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
434         * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
435         Likewise.
436         * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
437         Likewise.
438         * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
439         * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
440         * testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
441         * testsuite/30_threads/future/cons/constexpr.cc: Likewise.
442         * testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
443         * testsuite/30_threads/future/cons/default.cc: Likewise.
444         * testsuite/30_threads/future/cons/move.cc: Likewise.
445         * testsuite/30_threads/future/cons/move_assign.cc: Likewise.
446         * testsuite/30_threads/future/members/45133.cc: Likewise.
447         * testsuite/30_threads/future/members/get.cc: Likewise.
448         * testsuite/30_threads/future/members/get2.cc: Likewise.
449         * testsuite/30_threads/future/members/share.cc: Likewise.
450         * testsuite/30_threads/future/members/valid.cc: Likewise.
451         * testsuite/30_threads/future/members/wait.cc: Likewise.
452         * testsuite/30_threads/future/members/wait_for.cc: Likewise.
453         * testsuite/30_threads/future/members/wait_until.cc: Likewise.
454         * testsuite/30_threads/future/requirements/explicit_instantiation.cc:
455         Likewise.
456         * testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
457         Likewise.
458         * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
459         * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
460         * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
461         * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
462         * testsuite/30_threads/lock/1.cc: Likewise.
463         * testsuite/30_threads/lock/2.cc: Likewise.
464         * testsuite/30_threads/lock/3.cc: Likewise.
465         * testsuite/30_threads/lock/4.cc: Likewise.
466         * testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
467         * testsuite/30_threads/lock_guard/requirements/
468         explicit_instantiation.cc: Likewise.
469         * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
470         * testsuite/30_threads/mutex/cons/1.cc: Likewise.
471         * testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
472         * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
473         * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
474         * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
475         * testsuite/30_threads/mutex/lock/1.cc: Likewise.
476         * testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
477         * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
478         * testsuite/30_threads/mutex/requirements/standard_layout.cc::
479         Likewise.
480         * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
481         * testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
482         * testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
483         * testsuite/30_threads/mutex/unlock/1.cc: Likewise.
484         * testsuite/30_threads/mutex/unlock/2.cc: Likewise.
485         * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
486         * testsuite/30_threads/packaged_task/49668.cc: Likewise.
487         * testsuite/30_threads/packaged_task/60564.cc: Likewise.
488         * testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
489         * testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
490         * testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
491         * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
492         * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
493         * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
494         * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
495         * testsuite/30_threads/packaged_task/cons/assign_neg.cc: Likewise.
496         * testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
497         * testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
498         * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
499         * testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
500         Likewise.
501         * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
502         * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
503         * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
504         * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
505         * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
506         * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
507         * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
508         * testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
509         * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
510         * testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
511         * testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
512         * testsuite/30_threads/packaged_task/requirements/
513         explicit_instantiation.cc: Likewise.
514         * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
515         * testsuite/30_threads/promise/60966.cc: Likewise.
516         * testsuite/30_threads/promise/69106.cc: Likewise.
517         * testsuite/30_threads/promise/cons/1.cc: Likewise.
518         * testsuite/30_threads/promise/cons/alloc.cc: Likewise.
519         * testsuite/30_threads/promise/cons/alloc2.cc: Likewise.
520         * testsuite/30_threads/promise/cons/alloc_min.cc: Likewise.
521         * testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
522         * testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
523         * testsuite/30_threads/promise/cons/move.cc: Likewise.
524         * testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
525         * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
526         * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
527         * testsuite/30_threads/promise/members/get_future.cc: Likewise.
528         * testsuite/30_threads/promise/members/get_future2.cc: Likewise.
529         * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
530         * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
531         * testsuite/30_threads/promise/members/set_value.cc: Likewise.
532         * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
533         * testsuite/30_threads/promise/members/set_value3.cc: Likewise.
534         * testsuite/30_threads/promise/members/swap.cc: Likewise.
535         * testsuite/30_threads/promise/requirements/explicit_instantiation.cc:
536         * Likewise.
537         * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
539         * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
540         from namespace std.
541         * testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive.
542         * testsuite/20_util/duration/arithmetic/1.cc: Likewise.
543         * testsuite/20_util/duration/arithmetic/2.cc: Likewise.
544         * testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise.
545         * testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise.
546         * testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
547         * testsuite/20_util/duration/comparison_operators/1.cc: Likewise.
548         * testsuite/20_util/duration/cons/1.cc: Likewise.
549         * testsuite/20_util/duration/cons/1_neg.cc: Likewise.
550         * testsuite/20_util/duration/cons/2.cc: Likewise.
551         * testsuite/20_util/duration/cons/54025.cc: Likewise.
552         * testsuite/20_util/duration/cons/dr974_neg.cc: Likewise.
553         * testsuite/20_util/duration/requirements/explicit_instantiation/
554         explicit_instantiation.cc: Likewise.
555         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
556         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
557         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
558         * testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise.
559         * testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
560         * testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
561         * testsuite/20_util/ratio/comparisons/comp3.cc: Likewise.
562         * testsuite/20_util/ratio/cons/cons1.cc: Likewise.
563         * testsuite/20_util/ratio/operations/45866.cc: Likewise.
564         * testsuite/20_util/ratio/operations/47913.cc: Likewise.
565         * testsuite/20_util/ratio/operations/53840.cc: Likewise.
566         * testsuite/20_util/ratio/operations/ops1.cc: Likewise.
567         * testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
568         * testsuite/20_util/system_clock/1.cc: Likewise.
569         * testsuite/20_util/time_point/1.cc: Likewise.
570         * testsuite/20_util/time_point/2.cc: Likewise.
571         * testsuite/20_util/time_point/3.cc: Likewise.
572         * testsuite/20_util/time_point/requirements/explicit_instantiation/
573         explicit_instantiation.cc: Likewise.
574         * testsuite/21_strings/basic_string/requirements/
575         explicit_instantiation/char16_t/1.cc: Likewise.
576         * testsuite/21_strings/basic_string/requirements/
577         explicit_instantiation/char32_t/1.cc: Likewise.
578         * testsuite/21_strings/basic_string_view/requirements/
579         explicit_instantiation/char16_t/1.cc: Likewise.
580         * testsuite/21_strings/basic_string_view/requirements/
581         explicit_instantiation/char32_t/1.cc: Likewise.
582         * testsuite/21_strings/char_traits/requirements/
583         explicit_instantiation/char16_t/1.cc: Likewise.
584         * testsuite/21_strings/char_traits/requirements/
585         explicit_instantiation/char32_t/1.cc: Likewise.
586         * testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
587         * testsuite/22_locale/codecvt/char16_t.cc: Likewise.
588         * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
589         * testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc:
590         Likewise.
591         * testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
592         Likewise.
593         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
594         Likewise.
595         * testsuite/22_locale/codecvt/utf8.cc: Likewise.
596         * testsuite/23_containers/vector/bool/72847.cc: Likewise.
597         * testsuite/23_containers/vector/debug/multithreaded_swap.cc:
598         Likewise.
599         * testsuite/experimental/string_view/requirements/
600         explicit_instantiation/char16_t/1.cc: Likewise.
601         * testsuite/experimental/string_view/requirements/
602         explicit_instantiation/char32_t/1.cc: Likewise.
603         * testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/
604         1.cc: Likewise.
605         * testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
606         1.cc: Likewise.
608         * include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1]
609         (random_condition, throw_value_random, throw_allocator_random)
610         (std::hash<throw_value_random>): Do not define when <tr1/random> is
611         not usable.
612         * src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not
613         define transactional memory support when <stdint.h> is not usable.
615         * include/bits/hashtable_policy.h (__detail::__clp2): Use faster
616         implementation that doesn't depend on <stdint.h> types.
617         * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use
618         std::size_t when std::uintptr_t is not usable.
619         [!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable)
620         (undeclare_reachable, declare_no_pointers, undeclare_no_pointers):
621         Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
623         * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1]
624         (hash<u16string>, hash<u32string>): Remove dependency on
625         _GLIBCXX_USE_C99_STDINT_TR1.
626         * include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1]
627         (char_traits<char16_t>, char_traits<char32_t>): Remove dependency on
628         _GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and
629         __UINT_LEAST32_TYPE__ or make_unsigned when <stdint.h> is not usable.
630         * include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1]
631         (codecvt<char16_t, char, mbstate_t>)
632         (codecvt<char32_t, char, mbstate_t>)
633         (codecvt_byname<char16_t, char, mbstate_t>)
634         (codecvt_byname<char32_t, char, mbstate_t>): Remove dependency
635         on _GLIBCXX_USE_C99_STDINT_TR1.
636         * include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1]
637         (_GLIBCXX_NUM_UNICODE_FACETS): Likewise.
638         * include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
639         (char_traits<char16_t>, char_traits<char32_t>)
640         (basic_string<char16_t>, basic_string<char32_t>): Remove dependency
641         on _GLIBCXX_USE_C99_STDINT_TR1.
642         * include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
643         (u16string_view, u32string_view, hash<u16string_view>)
644         (hash<u32string_view>, operator""sv(const char16_t, size_t))
645         (operator""sv(const char32_t, size_t)): Likewise.
646         * include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1]
647         (hash<__u16vstring>, hash<__u32vstring>): Likewise.
648         * include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
649         (__u16vstring, __u16sso_string, __u16rc_string, __u32vstring)
650         (__u32sso_string, __u32rc_string): Likewise.
651         * include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode)
652         (codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise.
653         * include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
654         (u16string_view, u32string_view, hash<u16string_view>)
655         (hash<u32string_view>, operator""sv(const char16_t, size_t))
656         (operator""sv(const char32_t, size_t)): Likewise.
657         * src/c++11/codecvt.cc: Likewise.
658         * src/c++98/locale_init.cc: Likewise.
659         * src/c++98/localename.cc: Likewise.
661         * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1]
662         (__atomic_futex_unsigned_base): Remove dependency on
663         _GLIBCXX_USE_C99_STDINT_TR1 macro.
664         * include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1]
665         (unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1.
666         * include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t)
667         (uintmax_t): Define using predefined macros.
668         * include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration)
669         (time_point, system_clock, high_resolution_clock, steady_clock): Remove
670         dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro.
671         (nanoseconds, microseconds, milliseconds, seconds, minutes, hours):
672         [!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or
673         long long when <stdint.h> is not usable.
674         * include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1]
675         (condition_variable, condition_variable_any): Remove dependency on
676         _GLIBCXX_USE_C99_STDINT_TR1.
677         * include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise)
678         (packaged_task, async): Likewise.
679         * include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex)
680         (timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock)
681         (once_flag, call_once): Likewise.
682         * include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise.
683         * include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1]
684         (shared_mutex, shared_timed_mutex, shared_lock): Likewise.
685         * include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread)
686         (this_thread::get_id, this_thread::yield, this_thread::sleep_for)
687         (this_thread::sleep_until): Likewise.
688         * src/c++11/chrono.cc: Remove dependency on
689         _GLIBCXX_USE_C99_STDINT_TR1 macro.
690         * src/c++11/condition_variable.cc: Likewise.
691         * src/c++11/futex.cc: Likewise.
692         * src/c++11/future.cc: Likewise.
693         * src/c++11/mutex.cc: Likewise.
694         * src/c++11/thread.cc: Likewise.
695         * testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error.
696         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
697         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
698         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
699         * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
700         * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
702 2018-07-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
704         PR libstdc++/77691
705         * testsuite/experimental/memory_resource/new_delete_resource.cc:
706         xfail execution on 32-bit Solaris/x86.
708 2018-07-26  Marc Glisse  <marc.glisse@inria.fr>
710         * include/bits/stl_vector.h (_Vector_impl_data::_M_copy_data): New.
711         (_Vector_impl_data::_M_swap_data): Use _M_copy_data.
712         (vector::_M_move_assign): Reorder the swaps.
714 2018-07-26  Jonathan Wakely  <jwakely@redhat.com>
716         PR libstdc++/86676
717         * testsuite/20_util/monotonic_buffer_resource/release.cc: Request
718         same alignment for post-release allocation.
720 2018-07-25  Jonathan Wakely  <jwakely@redhat.com>
722         PR libstdc++/86676
723         * testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
724         buffer being misaligned and so returned pointer not being at start.
726         * include/experimental/memory_resource: Include <cstddef> header.
728         * acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
729         * src/Makefile.am: Add comment.
730         * src/c++17/Makefile.in: Regenerate.
732         * include/Makefile.am: Add new <bits/unique_lock.h> header.
733         * include/Makefile.in: Regenerate.
734         * include/bits/std_mutex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (mutex)
735         (lock_guard): Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
736         (unique_lock): Move definition to ...
737         * include/bits/unique_lock.h: New header.
738         [!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Define unconditionally.
739         [_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock(mutex_type&, time_point))
740         (unique_lock(mutex_type&, duration), unique_lock::try_lock_until)
741         (unique_lock::try_lock_for): Define only when <chrono> is usable.
742         * include/std/condition_variable: Include <bits/unique_lock.h>.
743         * include/std/mutex: Likewise.
745 2018-07-24  Jonathan Wakely  <jwakely@redhat.com>
747         * config/abi/pre/gnu.ver: Export new symbols.
748         * configure: Regenerate.
749         * include/Makefile.am: Add new <memory_resource> header.
750         * include/Makefile.in: Regenerate.
751         * include/precompiled/stdc++.h: Include <memory_resource> for C++17.
752         * include/std/memory_resource: New header.
753         (memory_resource, polymorphic_allocator, new_delete_resource)
754         (null_memory_resource, set_default_resource, get_default_resource)
755         (pool_options, monotonic_buffer_resource): Define.
756         * src/Makefile.am: Add c++17 directory.
757         * src/Makefile.in: Regenerate.
758         * src/c++11/Makefile.am: Fix comment.
759         * src/c++17/Makefile.am: Add makefile for new sub-directory.
760         * src/c++17/Makefile.in: Generate.
761         * src/c++17/memory_resource.cc: New.
762         (newdel_res_t, null_res_t, constant_init, newdel_res, null_res)
763         (default_res, new_delete_resource, null_memory_resource)
764         (set_default_resource, get_default_resource): Define.
765         * testsuite/20_util/memory_resource/1.cc: New test.
766         * testsuite/20_util/memory_resource/2.cc: New test.
767         * testsuite/20_util/monotonic_buffer_resource/1.cc: New test.
768         * testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test.
769         * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test.
770         * testsuite/20_util/monotonic_buffer_resource/release.cc: New test.
771         * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
772         New test.
773         * testsuite/20_util/polymorphic_allocator/1.cc: New test.
774         * testsuite/20_util/polymorphic_allocator/resource.cc: New test.
775         * testsuite/20_util/polymorphic_allocator/select.cc: New test.
776         * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
777         Define concrete memory resource for testing.
778         (__gnu_test::default_resource_mgr): Define RAII helper for changing
779         default resource.
781         PR libstdc++/86658
782         * include/bits/stl_algobase.h (__niter_wrap<_Iterator>): Pass unused
783         parameter by reference, to avoid copying invalid iterators.
784         * testsuite/25_algorithms/copy/86658.cc: New test.
786         * include/std/bit (__countl_zero, __countr_zero, __popcount): Use
787         local variables for number of digits instead of type aliases.
788         (__log2p1): Remove redundant branch also checked in __countl_zero.
790         * include/bits/uses_allocator.h (__is_erased_or_convertible): Reorder
791         conditions. Add comments.
792         * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error line.
793         * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
794         * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
796         * include/bits/uses_allocator.h (__is_erased_or_convertible): Remove.
797         (__uses_allocator_helper): Check conditions directly instead of
798         using __is_erased_or_convertible.
800         * include/experimental/memory_resource: Adjust comments and
801         whitespace.
802         (__resource_adaptor_imp): Add second template parameter for type of
803         memory resource base class.
804         (memory_resource): Define default constructor, destructor, copy
805         constructor and copy assignment operator as defaulted.
807         PR libstdc++/70966
808         * include/experimental/memory_resource (__get_default_resource): Use
809         placement new to create an object with dynamic storage duration.
811 2018-07-23  Jonathan Wakely  <jwakely@redhat.com>
813         PR libstdc++/70940
814         * include/experimental/memory_resource
815         (__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion.
816         (__resource_adaptor_common::__guaranteed_alignment): New helper to
817         give maximum alignment an allocator guarantees. Specialize for known
818         allocators using new and malloc.
819         (__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment.
820         (__resource_adaptor_imp::do_deallocate): Likewise.
821         * testsuite/experimental/memory_resource/new_delete_resource.cc:
822         Check that new and delete are called with expected sizes.
824 2018-07-20  Jonathan Wakely  <jwakely@redhat.com>
826         PR libstdc++/86595
827         * include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
828         noexcept.
830 2018-07-20  Fangrui Song  <maskray@google.com>
832         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
833         _GLIBCXX_VISIBILITY(default).
835 2018-07-20  Jonathan Wakely  <jwakely@redhat.com>
837         PR libstdc++/86603
838         * include/std/version: Move __cpp_lib_list_remove_return_type macro.
840 2018-07-19  Jonathan Wakely  <jwakely@redhat.com>
842         * include/std/type_traits (__is_member_object_pointer_helper): Use
843         __not_<is_function<_Tp>>::type instead of integral_constant.
844         (__is_member_function_pointer_helper): Likewise for
845         is_function<_Tp>::type.
846         (is_compund): Likewise for __not_<is_fundamental<_Tp>>::type.
847         (__do_is_nt_destructible_impl): Use __bool_constant and reindent.
848         (is_trivially_constructible): Remove redundant use of
849         is_constructible.
850         (__is_trivially_copy_assignable_impl): Remove redundant use of
851         is_copy_assignable.
852         (__is_trivially_move_assignable_impl): Remove redundant use of
853         is_move_assignable.
854         (is_trivially_destructible): Use __bool_constant.
855         * testsuite/20_util/is_trivially_assignable/value.cc: Add some more
856         tests for scalar types.
858 2018-07-19  Glen Joseph Fernandes  <glenjofe@gmail.com>
860         * include/bits/stl_algobase.h (__copy_move_a): Used
861         __is_trivially_copyable.
862         (__copy_move_backward_a): Likewise.
863         * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
864         New test.
866 2018-07-17  Jonathan Wakely  <jwakely@redhat.com>
868         PR libstdc++/86450
869         * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Don't define WERROR.
870         (GLIBCXX_EXPORT_FLAGS): Use -Wabi=2 instead of -Wabi.
871         * configure: Regenerate.
872         * configure.ac: Change GLIBCXX_ENABLE_WERROR default to "no".
873         * doc/Makefile.in: Regenerate.
874         * fragment.am: Set WERROR_FLAG to -Werror instead of $(WERROR).
875         * include/Makefile.in: Regenerate.
876         * libsupc++/Makefile.in: Regenerate.
877         * po/Makefile.in: Regenerate.
878         * python/Makefile.in: Regenerate.
879         * src/Makefile.in: Regenerate.
880         * src/c++11/Makefile.in: Regenerate.
881         * src/c++11/debug.cc: Use diagnostic pragmas to suppress warnings
882         from -Wabi=2 that don't affect exported symbols.
883         * src/c++98/Makefile.in: Regenerate.
884         * src/filesystem/Makefile.in: Regenerate.
885         * testsuite/Makefile.in: Regenerate.
887         * src/c++11/compatibility-thread-c++0x.cc [_GLIBCXX_SHARED]
888         (_Async_state_common::_M_join): Simplify use of std::call_once and
889         corresponding explicit instantiation.
890         (_Maybe_wrap_member_pointer, _Bind_simple, _Bind_simple_helper)
891         (__bind_simple): Remove definitions and explicit instantiation that
892         are not required by exported symbols.
894 2018-07-16  Jonathan Wakely  <jwakely@redhat.com>
896         * scripts/create_testsuite_files: Fix typo in comment.
898         PR libstdc++/86537
899         * include/bits/shared_ptr.h (less<shared_ptr<_Tp>>): Remove
900         non-standard partial specialization.
901         * include/bits/shared_ptr_base.h (_Sp_less): Remove class definition.
902         (less<__shared_ptr<_Tp, _Lp>): Remove partial specialization.
903         * testsuite/20_util/shared_ptr/comparison/86537.cc: New test.
905 2018-07-16  Andreas Krebbel  <krebbel@linux.ibm.com>
907         * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
908         * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
909         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
911 2018-07-06  François Dumont  <fdumont@gcc.gnu.org>
913         * include/debug/functions.h (__gnu_debug::__check_string): Move...
914         * include/debug/string (__gnu_debug::__check_string): ... here.
915         (_GLIBCXX_DEBUG_VERIFY_STR_COND_AT): New.
916         (__glibcxx_check_string_n_constructor): New.
917         (__gnu_debug::basic_string<>(const _CharT*, size_type, const _Alloc&)):
918         Use latter.
919         (__glibcxx_check_string_constructor): New.
920         (__gnu_debug::basic_string<>(const _CharT*, const _Alloc&)):
921         Use latter.
922         * testsuite/21_strings/basic_string/debug/1_neg.cc: New.
923         * testsuite/21_strings/basic_string/debug/2_neg.cc: New.
925 2018-07-06  Jonathan Wakely  <jwakely@redhat.com>
927         PR libstdc++/84928 use std::move in <numeric> algorithms
928         * include/bits/stl_numeric.h (_GLIBCXX_MOVE_IF_20): Define macro to
929         conditionally move, according to __cplusplus value.
930         (accumulate, inner_product, partial_sum, adjacent_difference): Use
931         _GLIBCXX_MOVE_IF_20.
932         * testsuite/26_numerics/accumulate/lwg2055.cc: New test.
933         * testsuite/26_numerics/adjacent_difference/lwg2055.cc: New test.
934         * testsuite/26_numerics/inner_product/lwg2055.cc: New test.
935         * testsuite/26_numerics/partial_sum/lwg2055.cc: New test.
937         * config/abi/pre/gnu.ver: Use wildcards to combine related patterns.
939         P0935R0 Eradicating unnecessarily explicit default constructors
940         * config/abi/pre/gnu.ver: Tighten existing patterns and export new
941         default constructor symbols.
942         * include/std/sstream (basic_stringbuf, basic_istringstream)
943         (basic_ostringstream, basic_stringstream): Remove default arguments
944         from explicit constructors taking ios_base::openmode and add separate
945         non-explicit default constructors.
946         * testsuite/27_io/basic_istringstream/cons/default.cc: New.
947         * testsuite/27_io/basic_ostringstream/cons/default.cc: New.
948         * testsuite/27_io/basic_stringstream/cons/default.cc: New.
949         * testsuite/27_io/basic_stringbuf/cons/char/default.cc: New.
950         * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: New.
952         * include/std/variant (__accepted_index): Use void_t.
954 2018-07-05  Jonathan Wakely  <jwakely@redhat.com>
956         PR libstdc++/85831
957         * config/abi/pre/gnu.ver: Export move constructors and move
958         assignment operators for std::logic_error and std::runtime_error.
959         * include/std/stdexcept: Use _GLIBCXX_NOTHROW instead of
960         _GLIBCXX_USE_NOEXCEPT.
961         (logic_error, runtime_error): Declare move constructors and move
962         assignment operators. When not declared already, define copy
963         constructors and copy assignment operators as explicit-defaulted.
964         (domain_error, invalid_argument, length_error, out_of_range)
965         (overflow_error, underflow_error): Define move constructors and move
966         assignment operators as explicitly-defaulted.
967         * libsupc++/exception.h (exception): Likewise.
968         * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Define
969         move constructors and move assignment operators as defaulted.
970         * testsuite/19_diagnostics/stdexcept.cc: Check that constructors and
971         assignment operators are defined.
973         * testsuite/21_strings/basic_string/cons/char/deduction.cc: XFAIL for
974         COW strings.
975         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
976         Likewise.
977         * testsuite/21_strings/basic_string/requirements/
978         explicit_instantiation/debug.cc: Likewise.
980         PR libstdc++/58265
981         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
982         (basic_string::assign(basic_string&&)): Add conditional noexcept
983         depending on the allocator's is_always_equal property (LWG 2063).
984         * testsuite/21_strings/basic_string/modifiers/assign/char/
985         move_assign.cc: Check for non-throwing exception specification.
986         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
987         move_assign.cc: Likewise.
989         PR libstdc++/58265
990         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
991         [_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
992         Add GLIBCXX_NOEXCEPT.
993         (basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
994         to depend on the allocator's is_always_equal property (LWG 2063).
995         (basic_string::swap(basic_string&)): Likewise.
996         * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
997         (basic_string::swap(basic_string&)): Likewise.
998         * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
999         Check is_nothrow_move_assignable.
1000         * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
1001         Check is_nothrow_move_assignable.
1002         * testsuite/21_strings/basic_string/cons/char/
1003         noexcept_move_construct.cc: Likewise.
1004         * testsuite/21_strings/basic_string/cons/wchar_t/
1005         noexcept_move_construct.cc: Likewise.
1007 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
1009         P0646R1 Improving the Return Value of Erase-Like Algorithms I
1010         * include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
1011         Define.
1012         (forward_list::__remove_return_type): Define typedef as size_type or
1013         void, according to __cplusplus value.
1014         (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
1015         empty, according to __cplusplus value.
1016         (forward_list::remove, forward_list::unique): Use typedef and macro
1017         to change return type and add abi-tag for C++2a.
1018         (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
1019         typedef to change return type for C++2a.
1020         * include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
1021         (forward_list::remove, forward_list::remove_if<Pred>)
1022         (forward_list::unique<BinPred>): Return number of removed elements
1023         for C++2a.
1024         * include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
1025         (list::remove, list::unique, list::remove_if<Predicate>)
1026         (list::unique<BinaryPredicate>): Return number of removed elements
1027         for C++2a.
1028         * include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
1029         (list::__remove_return_type): Define typedef as size_type or
1030         void, according to __cplusplus value.
1031         (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
1032         empty, according to __cplusplus value.
1033         (list::remove, list::unique): Use typedef and macro to change return
1034         type and add abi-tag for C++2a.
1035         (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
1036         typedef to change return type for C++2a.
1037         * include/std/version (__cpp_lib_list_remove_return_type): Define.
1038         * testsuite/23_containers/forward_list/operations/
1039         remove_cxx20_return.cc: New.
1040         * testsuite/23_containers/forward_list/operations/
1041         unique_cxx20_return.cc: New.
1043         P0458R2 Checking for Existence of an Element in Associative Containers
1044         * include/bits/stl_map.h (map::contains): Add for C++2a.
1045         * include/bits/stl_multimap.h (multimap::contains): Likewise.
1046         * include/bits/stl_multiset.h (multiset::contains): Likewise.
1047         * include/bits/stl_set.h (set::contains): Likewise.
1048         * include/bits/stl_tree.h (__has_is_transparent_t): Define alias.
1049         (_Rb_tree::_M_find_tr, _Rb_tree::_M_count_tr)
1050         (_Rb_tree::_M_lower_bound_tr, _Rb_tree::_M_upper_bound_tr)
1051         (_Rb_tree::_M_equal_range_tr): Use __has_is_transparent_t.
1052         * include/bits/unordered_map.h (unordered_map::contains)
1053         (unordered_multimap::contains): Add for C++2a.
1054         * include/bits/unordered_set.h (unordered_set::contains)
1055         (unordered_multiset::contains): Likewise.
1056         * testsuite/23_containers/map/operations/contains.cc: New.
1057         * testsuite/23_containers/multimap/operations/contains.cc: New.
1058         * testsuite/23_containers/multiset/operations/contains.cc: New.
1059         * testsuite/23_containers/set/operations/contains.cc: New.
1060         * testsuite/23_containers/unordered_map/operations/contains.cc: New.
1061         * testsuite/23_containers/unordered_multimap/operations/contains.cc:
1062         New.
1063         * testsuite/23_containers/unordered_multiset/operations/contains.cc:
1064         New.
1065         * testsuite/23_containers/unordered_set/operations/contains.cc: New.
1067 2018-07-04  François Dumont  <fdumont@gcc.gnu.org>
1069         PR libstdc++/86272
1070         * include/debug/string
1071         (__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
1072         Use __glibcxx_check_insert_range.
1073         * 21_strings/basic_string/cons/char/1.cc: Adapt test to use
1074         __gnu_debug::string when _GLIBCXX_DEBUG.
1075         * 21_strings/basic_string/init-list.cc: Likewise.
1076         * 21_strings/basic_string/modifiers/insert/char/1.cc: Likewise.
1077         * 21_strings/basic_string/modifiers/insert/char/2.cc: Likewise.
1078         * 21_strings/basic_string/modifiers/insert/char/83328.cc: Likewise.
1079         * 21_strings/basic_string/types/1.cc: Likewise.
1081 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
1083         * testsuite/25_algorithms/make_heap/complexity.cc: Require effective
1084         target for std::random_device.
1085         * testsuite/26_numerics/random/random_device/cons/default.cc:
1086         Likewise.
1087         * testsuite/experimental/algorithm/sample-2.cc: Likewise.
1088         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
1089         * testsuite/experimental/random/randint.cc: Likewise.
1090         * testsuite/lib/libstdc++.exp
1091         (check_effective_target_random_device): New proc.
1093 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
1094             Jakub Jelinek  <jakub@redhat.com>
1096         * include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.
1098 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
1100         PR libstdc++/86398
1101         * include/std/type_traits (is_trivially_constructible): Check
1102         is_constructible before __is_trivially_constructible.
1103         * testsuite/20_util/is_trivially_constructible/value.cc: Add more
1104         tests, including negative cases.
1105         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Use
1106         zero for dg-error lineno.
1107         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
1108         Likewise.
1110         * include/std/bit (__rotl, __rotr): Avoid branch.
1111         (_If_is_unsigned_integer): Use remove_cv_t.
1112         * testsuite/26_numerics/bit/bitops.count/popcount.cc: New.
1114 2018-07-03  Jonathan Wakely  <jwakely@redhat.com>
1116         P0556R3 Integral power-of-2 operations, P0553R2 Bit operations
1117         * include/Makefile.am: Add new header.
1118         * include/Makefile.in: Regenerate.
1119         * include/precompiled/stdc++.h: Include new header.
1120         * include/std/bit: New header.
1121         (__rotl, __rotr, __countl_zero, __countl_one, __countr_zero)
1122         (__countr_one, __popcount, __ispow2, __ceil2, __floor2, __log2p1):
1123         Define for C++14.
1124         [!__STRICT_ANSI__] (rotl, rotr, countl_zero, countl_one, countr_zero)
1125         (countr_one, popcount): Define for C++2a. Also overload for std::byte.
1126         (ispow2, ceil2, floor2, log2p1): Define for C++2a.
1127         [!__STRICT_ANSI__] (ispow2, ceil2, floor2, log2p1): Overload for
1128         std::byte.
1129         * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: New.
1130         * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: New.
1131         * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: New.
1132         * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: New.
1133         * testsuite/26_numerics/bit/bitops.rot/rotl.cc: New.
1134         * testsuite/26_numerics/bit/bitops.rot/rotr.cc: New.
1135         * testsuite/26_numerics/bit/bitops.count/countl_one.cc: New.
1136         * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: New.
1137         * testsuite/26_numerics/bit/bitops.count/countr_one.cc: New.
1138         * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: New.
1140         * include/bits/alloc_traits.h: Remove redundant preprocessor
1141         condition.
1143 2018-07-03  François Dumont  <fdumont@gcc.gnu.org>
1145         * include/bits/stl_algobase.h (__niter_wrap): New.
1146         (__copy_move_a2(_II, _II, _OI)): Use latter.
1147         (__copy_move_backward_a2(_BI1, _BI1, _BI2)): Likewise.
1148         (fill_n(_OI, _Size, const _Tp&)): Likewise.
1149         (equal(_II1, _II1, _II2)): Use __glibcxx_requires_can_increment.
1150         * include/debug/stl_iterator.h
1151         (std::__niter_base(const __gnu_cxx::_Safe_iterator<
1152         __gnu_cxx::__normal_iterator<>, _Sequence>&)): New declaration.
1153         * include/debug/vector (__niter_base(const __gnu_cxx::_Safe_iterator<
1154         __gnu_cxx::__normal_iterator<>, _Sequence>&)): New.
1156 2018-07-02  Jonathan Wakely  <jwakely@redhat.com>
1158         P0758R1 Implicit conversion traits
1159         * include/std/type_traits [__cplusplus > 201703]
1160         (__is_convertible_helper::__is_nothrow_type): Define new member.
1161         (__is_convertible_helper<_From, _To, false>::__test_aux1): Add
1162         noexcept.
1163         (__is_convertible_helper<_From, _To, false>::__test_nothrow)
1164         (__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add
1165         new members.
1166         (is_nothrow_convertible, is_nothrow_convertible_v): Define for C++2a.
1167         * testsuite/20_util/is_nothrow_convertible/value.cc: New.
1168         * testsuite/20_util/is_nothrow_convertible/requirements/
1169         explicit_instantiation.cc: New.
1170         * testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc:
1171         New.
1173         P0887R1 The identity metafunction
1174         * include/std/type_traits (type_identity, type_identity_t): Define
1175         for C++2a.
1176         * testsuite/20_util/type_identity/requirements/alias_decl.cc: New.
1177         * testsuite/20_util/type_identity/requirements/
1178         explicit_instantiation.cc:New.
1179         * testsuite/20_util/type_identity/requirements/typedefs.cc: New.
1181         * include/bits/regex.h (sub_match::operator string_type): Call str().
1182         (sub_match::compare): Use _M_str() instead of str().
1183         (sub_match::_M_compare): New public function.
1184         (sub_match::__string_view): New helper type.
1185         (sub_match::_M_str): New overloaded functions to avoid creating a
1186         string_type object when not needed.
1187         (operator==, operator!=, operator<, operator>, operator<=, operator>=):
1188         Use sub_match::_M_compare instead of creating string_type objects.
1189         Fix Doxygen comments.
1190         * include/bits/regex_compiler.h (__has_contiguous_iter): Remove.
1191         (__is_contiguous_normal_iter): Rename to __is_contiguous_iter and
1192         simplify.
1193         (__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
1194         __enable_if_t.
1195         * include/std/type_traits (__enable_if_t): Define for C++11.
1196         * testsuite/28_regex/sub_match/compare.cc: New.
1197         * testsuite/util/testsuite_iterators.h (remove_cv): Add transformation
1198         trait.
1199         (input_iterator_wrapper): Use remove_cv for value_type argument of
1200         std::iterator base class.
1202 2018-06-29  Jonathan Wakely  <jwakely@redhat.com>
1204         * testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc:
1205         Add whitespace to dejagnu directive.
1206         * testsuite/23_containers/array/element_access/at_neg.cc: Likewise.
1208 2018-06-27  François Dumont  <fdumont@gcc.gnu.org>
1210         * include/bits/stl_vector.h
1211         (struct _Vector_base<>::_Vector_impl_data): New.
1212         (struct _Vector_base<>::_Vector_impl): Inherit from latter.
1213         (_Vector_base<>::_Vector_impl::_M_swap_data): Move...
1214         (_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here.
1215         (_Vector_base<>::_Vector_impl()): Add noexcept qualification.
1216         (_Vector_base<>::_Vector_impl(_Vector_impl&&)): New.
1217         (_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New.
1218         (_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter.
1219         (_Vector_base()): Default.
1220         (_Vector_base(_Vector_base&&)): Default.
1221         (_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete.
1222         (_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete.
1223         (_Vector_base::_M_create_storage(size_t)): Make protected.
1224         (vector()): Default.
1225         (vector(vector&&)): Default.
1226         (vector(vector&&, const allocator_type&, true_type)): New.
1227         (vector(vector&&, const allocator_type&, false_type)): New.
1228         (vector(vector&&, const allocator_type&)): Use latters.
1229         (vector(_InputIte, _InputIte, const allocator_type&)): Call
1230         _M_range_initialize directly.
1231         * include/debug/vector
1232         (vector(vector&&, const allocator_type&)): Add noexcept qualification.
1233         * testsuite/23_containers/vector/allocator/default_init.cc: New.
1234         * testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add
1235         static assertions.
1237 2018-06-27  Jonathan Wakely  <jwakely@redhat.com>
1239         * include/bits/cpp_type_traits.h [__cplusplus >= 201703]
1240         (__is_byte<byte>): Define specialization for std::byte.
1242         PR libstdc++/86138
1243         * include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0]
1244         Declare explicit instantiations of COW empty reps and I/O functions.
1246 2018-06-26  David Edelsohn  <dje.gcc@gmail.com>
1248         * testsuite/experimental/algorithm/sample-2.cc: Add TLS DejaGNU
1249         directives.
1250         * testsuite/experimental/algorithm/shuffle.cc: Likewise.
1252 2018-06-26  Jonathan Wakely  <jwakely@redhat.com>
1254         * include/bits/regex.tcc (regex_iterator::operator==): Add missing
1255         noexcept.
1257 2018-06-25  Jonathan Wakely  <jwakely@redhat.com>
1259         PR libstdc++/86112
1260         * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
1261         Replace dict comprehension.
1263         PR libstdc++/81092
1264         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
1266         PR libstdc++/86292
1267         * include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
1268         Add try-catch block.
1269         * testsuite/23_containers/vector/cons/86292.cc: New.
1271         * doc/xml/manual/status_cxx2017.xml: Document N4531 status.
1273         * include/experimental/algorithm (sample, shuffle): Add new overloads
1274         using per-thread random number engine.
1275         * testsuite/experimental/algorithm/sample.cc: Simpify and reduce
1276         dependencies by using __gnu_test::test_container.
1277         * testsuite/experimental/algorithm/sample-2.cc: New.
1278         * testsuite/experimental/algorithm/shuffle.cc: New.
1280 2018-06-22  Jonathan Wakely  <jwakely@redhat.com>
1282         * config/abi/pre/gnu.ver: Fix __cxx11::basic_string patterns for
1283         different size_t mangling on 32-bit targets.
1285         PR libstdc++/86280
1286         * include/experimental/memory_resource
1287         (__resource_adaptor_common::_AlignMgr::_M_token_size): Use type large
1288         enough for result of left shift.
1290         PR libstdc++/86138
1291         * include/bits/basic_string.tcc:
1292         [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI]
1293         (basic_string<char>::_Rep::_S_empty_rep_storage)
1294         (basic_string<wchar_t>::_Rep::_S_empty_rep_storage): Add explicit
1295         instantiation declarations.
1296         [__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable
1297         explicit instantiation declarations.
1298         * testsuite/21_strings/basic_string/cons/char/86138.cc: New.
1299         * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New.
1301 2018-06-21  Jonathan Wakely  <jwakely@redhat.com>
1303         PR libstdc++/83328
1304         * acinclude.m4 (libtool_VERSION): Bump to 6:26:0.
1305         * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 and export new symbol.
1306         * configure: Regenerate.
1307         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
1308         (basic_string::insert(const_iterator, initializer_list<C>)): Add.
1309         [_GLIBCXX_USE_CXX11_ABI && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
1310         (basic_string::insert(iterator, initializer_list<C>)): Suppress
1311         definition.
1312         * include/debug/string (basic_string::insert(iterator, C)): Change
1313         first parameter to const_iterator.
1314         (basic_string::insert(iterator, size_type, C)): Likewise. Change
1315         return type to iterator.
1316         (basic_string::insert(iterator, InputIterator, InputIterator)):
1317         Likewise.
1318         (basic_string::insert(iterator, initializer_list<C>)): Change first
1319         parameter to const_iterator and return type to iterator.
1320         * src/c++11/string-inst.cc: Extend comment.
1321         * testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc:
1322         New.
1323         * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
1324         New.
1325         * testsuite/util/testsuite_abi.cc: Add new symbol version.
1327         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
1329         PR libstdc++/70940
1330         * include/experimental/memory_resource
1331         (__resource_adaptor_imp::do_deallocate): Add missing return.
1332         * testsuite/experimental/memory_resource/new_delete_resource.cc: New.
1333         * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
1334         resource_adaptor with std::allocator, __gnu_cxx::new_allocator and
1335         __gnu_cxx::malloc_allocator.
1337         PR libstdc++/70940
1338         * include/experimental/memory_resource (__resource_adaptor_common):
1339         New base class.
1340         (__resource_adaptor_common::_AlignMgr): Helper for obtaining aligned
1341         pointer from unaligned, and vice versa.
1342         (__resource_adaptor_imp::do_allocate): Use _AlignMgr to adjust
1343         allocated pointer to meet alignment request.
1344         (__resource_adaptor_imp::do_deallocate): Use _AlignMgr to retrieve
1345         original pointer for deallocation.
1346         (__resource_adaptor_imp::do_is_equal): Reformat.
1347         (__resource_adaptor_imp::_S_aligned_size): Remove.
1348         (__resource_adaptor_imp::_S_supported): Remove.
1349         (new_delete_resource): Use __gnu_cxx::new_allocator.
1350         * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
1351         extended alignments and use debug_allocator to check for matching
1352         allocate/deallocate pairs.
1354 2018-06-21  François Dumont  <fdumont@gcc.gnu.org>
1356         * include/debug/safe_iterator.h
1357         (_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
1358         Compare __x base iterator with a value-initialized iterator of the
1359         same type.
1361 2018-06-20  Jonathan Wakely  <jwakely@redhat.com>
1363         PR libstdc++/70966
1364         * include/experimental/memory_resource (__resource_adaptor_imp): Add
1365         static assertions to enforce requirements on pointer types.
1366         (__resource_adaptor_imp::get_allocator()): Add noexcept.
1367         (new_delete_resource, null_memory_resource): Return address of an
1368         object with dynamic storage duration.
1369         (__null_memory_resource): Remove.
1370         * testsuite/experimental/memory_resource/70966.cc: New.
1372         * testsuite/20_util/duration/arithmetic/dr3050.cc: Add new test
1373         missed from recent commit.
1375 2018-06-19  Jonathan Wakely  <jwakely@redhat.com>
1377         * include/std/utility: Remove unused <exception> header.
1379 2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
1381         LWG 2975 ensure construct(pair<T,U>*, ...) used to construct pairs
1382         * include/std/scoped_allocator (__not_pair): Define SFINAE helper.
1383         (construct(_Tp*, _Args&&...)): Remove from overload set when _Tp is
1384         a specialization of std::pair.
1385         * testsuite/20_util/scoped_allocator/construct_pair.cc: Ensure
1386         pair elements are constructed correctly.
1388         LWG 2989 hide path iostream operators from normal lookup
1389         * include/bits/fs_path.h (operator<<, operator>>): Define inline as
1390         friends.
1391         * testsuite/27_io/filesystem/path/io/dr2989.cc: New.
1393         LWG 3050 Fix cv-qualification of convertibility constraints
1394         * include/std/chrono (duration, operator*, operator/, operator%): Use
1395         const-qualified type as source type in is_convertible constraints.
1396         * testsuite/20_util/duration/arithmetic/dr3050.cc: New.
1397         * testsuite/20_util/duration/cons/dr3050.cc: New.
1398         * testsuite/20_util/duration/literals/range.cc: Rename to...
1399         * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
1400         dg-error lineno.
1402 2018-06-18  Maya Rashish  <coypu@sdf.org>
1404         * crossconfig.m4: Handle OpenBSD just like NetBSD.
1405         * configure: Rebuilt.
1407 2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
1409         P0754R2 <version> header
1410         * include/Makefile.am: Add new header.
1411         * include/Makefile.in: Regenerate.
1412         * include/bits/c++config: Change doxygen comment to suggest <version>
1413         instead of <iosfwd>.
1414         * include/precompiled/stdc++.h: Include <cwchar> and <cwctype>
1415         unconditionally.  Add C++17 and C++20 headers.
1416         * include/std/version: New header.
1417         * testsuite/17_intro/headers/c++2017/all_attributes.cc: New.
1418         * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: New.
1419         * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: New.
1420         * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: New.
1421         * testsuite/17_intro/headers/c++2017/operator_names.cc: New.
1422         * testsuite/17_intro/headers/c++2017/stdc++.cc: New.
1423         * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
1424         New.
1425         * testsuite/17_intro/headers/c++2020/all_attributes.cc: New.
1426         * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: New.
1427         * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: New.
1428         * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: New.
1429         * testsuite/17_intro/headers/c++2020/operator_names.cc: New.
1430         * testsuite/17_intro/headers/c++2020/stdc++.cc: New.
1431         * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc:
1432         New.
1433         * testsuite/18_support/headers/version/macros.cc: New.
1434         * testsuite/18_support/headers/version/macros.cc: New.
1436         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when
1437         enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and
1438         symlink.
1439         * config.h.in: Regenerate.
1440         * configure: Regenerate.
1441         * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink.
1443         LWG 3035. std::allocator's constructors should be constexpr
1444         * include/bits/allocator.h (allocator): Add constexpr to constructors
1445         for C++2a. Replace dynamic exception specifications with NOTHROW
1446         macro.
1447         (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
1448         NOTHROW.
1449         * include/bits/c++config (_GLIBCXX20_CONSTEXPR): Define.
1450         * include/ext/malloc_allocator.h (malloc_allocator): Add constexpr
1451         to constructors for C++2a.
1452         * include/ext/new_allocator.h (new_allocator): Likewise.
1454 2018-06-16  Jonathan Wakely  <jwakely@redhat.com>
1456         LWG 3076 basic_string CTAD ambiguity
1457         * doc/xml/manual/intro.xml: Document LWG 3076 change.
1458         * include/bits/basic_string.h
1459         [__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
1460         (basic_string(const _CharT*, const _Alloc&)): Turn into a function
1461         template constrained by _RequireAllocator.
1462         (basic_string(size_type, _CharT, const _Alloc&)): Likewise.
1463         * src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
1464         Define.
1465         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
1466         deduction
1467         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
1468         Likewise.
1470 2018-06-15  Jonathan Wakely  <jwakely@redhat.com>
1472         PR libstdc++/86169
1473         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
1474         (basic_string::data()): Unshare string.
1475         * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
1476         New.
1478         * include/std/string_view (basic_string_view(const CharT*)): Remove
1479         check for null pointer and add nonnull attribute.
1480         (compare(const CharT*), compare(size_type, size_type, const CharT*))
1481         (find(const CharT*, size_type), rfind(const CharT*, size_type))
1482         (find_first_of(const CharT*, size_type))
1483         (find_last_of(const CharT*, size_type))
1484         (find_first_not_of(const CharT*, size_type))
1485         (find_last_not_of(const CharT*, size_type)): Add nonnull attribute.
1486         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: New.
1487         * testsuite/21_strings/basic_string_view/operations/compare/char/
1488         nonnull.cc: New.
1489         * testsuite/21_strings/basic_string_view/operations/find/char/
1490         nonnull.cc: New.
1491         * testsuite/21_strings/basic_string_view/operations/rfind/char/
1492         nonnull.cc: New.
1494         PR libstdc++/86168
1495         * include/bits/random.h (random_device(const string&)): Remove
1496         default argument.
1498         * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
1499         define for C++17 and above.
1501         LWG 2993 reference_wrapper<T> conversion from T&&
1502         * doc/xml/manual/intro.xml: Document LWG 2993 change.
1503         * include/bits/refwrap.h (reference_wrapper(_Tp&)): Remove.
1504         (reference_wrapper(_Tp&&)): Remove.
1505         (reference_wrapper<_Up>(_Up&&)): Define new constructor as constrained
1506         template.
1507         (reference_wrapper): Add deduction guide.
1508         * testsuite/20_util/reference_wrapper/deduction.cc: New.
1509         * testsuite/20_util/reference_wrapper/lwg2993.cc: New.
1511         LWG 3039 Unnecessary decay in thread and packaged_task
1512         * include/std/future (__constrain_pkgdtask): Replace with ...
1513         (packaged_task::__not_same): New alias template, using
1514         __remove_cvref_t instead of decay.
1515         * include/std/thread (thread::__not_same): Add comment.
1517 2018-06-14  Jonathan Wakely  <jwakely@redhat.com>
1519         LWG 3075 basic_string needs deduction guides from basic_string_view
1520         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
1521         deduction from string views.
1522         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
1523         Likewise.
1525         LWG 3074 make scalar types non-deduced in valarray non-member functions
1526         * include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
1527         scalar parameters to be a non-deduced context.
1528         * include/std/valarray (_DEFINE_BINARY_OPERATOR): Likewise. Adjust
1529         whitespace.
1530         * testsuite/26_numerics/valarray/operators.cc: Test scalar operands.
1531         * testsuite/26_numerics/valarray/transcend.cc: New.
1533         * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
1534         Move back to <utility>.
1535         * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
1536         Restore to here.
1538         P0935R0 Eradicating unnecessarily explicit default constructors
1539         * include/backward/strstream (strstreambuf): Add non-explicit default
1540         constructor.
1541         * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
1542         Likewise.
1543         * include/bits/regex.h (match_results): Likewise.
1544         * testsuite/22_locale/conversions/buffer/1.cc: Test for non-explicit
1545         default constructor.
1546         * testsuite/22_locale/conversions/string/1.cc: Likewise.
1547         * testsuite/28_regex/match_results/ctors/char/default.cc: Likewise.
1548         * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
1550         * include/std/tuple (__cpp_lib_tuple_element_t): Move feature test
1551         macro from <utility> and change type to long.
1552         * include/std/utility (__cpp_lib_tuple_element_t): Remove.
1553         * testsuite/20_util/tuple/tuple_element_t.cc: Check for feature test
1554         macro.
1556         P0935R0 Eradicating unnecessarily explicit default constructors
1557         * include/bits/random.h (uniform_real_distribution::param_type)
1558         (normal_distribution::param_type, lognormal_distribution::param_type)
1559         (gamma_distribution::param_type, chi_squared_distribution::param_type)
1560         (cauchy_distribution::param_type, fisher_f_distribution::param_type)
1561         (student_t_distribution::param_type)
1562         (bernoulli_distribution::param_type)
1563         (binomial_distribution::param_type)
1564         (geometric_distribution::param_type)
1565         (negative_binomial_distribution::param_type)
1566         (poisson_distribution::param_type)
1567         (exponential_distribution::param_type)
1568         (weibull_distribution::param_type)
1569         (extreme_value_distribution::param_type): Add non-explicit default
1570         constructors. Remove default argument for first parameter of explicit
1571         constructors.
1572         * include/bits/uniform_int_dist.h
1573         (uniform_int_distribution::param_type): Likewise.
1574         * include/ext/random
1575         (beta_distribution::param_type, rice_distribution::param_type)
1576         (nakagami_distribution::param_type, pareto_distribution::param_type)
1577         (k_distribution::param_type, arcsine_distribution::param_type)
1578         (hoyt_distribution::param_type, triangular_distribution::param_type)
1579         (von_mises_distribution::param_type)
1580         (hypergeometric_distribution::param_type)
1581         (logistic_distribution::param_type)
1582         (uniform_inside_sphere_distribution::param_type): Likewise.
1583         (uniform_on_sphere_distribution::param_type): Make default constructor
1584         non-explicit.
1585         * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
1586         Test param_type for non-explicit default constructor.
1587         * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
1588         Likewise.
1589         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
1590         Likewise.
1591         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
1592         Likewise.
1593         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
1594         Likewise.
1595         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
1596         Likewise.
1597         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
1598         Likewise.
1599         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
1600         Likewise.
1601         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
1602         Likewise.
1603         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
1604         Likewise.
1605         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
1606         Likewise.
1607         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
1608         Likewise.
1609         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
1610         Likewise.
1611         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
1612         Likewise.
1613         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
1614         Likewise.
1615         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
1616         Likewise.
1617         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
1618         Likewise.
1619         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
1620         Likewise.
1621         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
1622         Likewise.
1623         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
1624         Likewise.
1625         * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
1626         * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
1627         * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
1628         * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
1629         Likewise.
1630         * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
1631         * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
1632         * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
1633         * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
1634         Likewise.
1635         * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
1636         * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
1637         * testsuite/ext/random/triangular_distribution/cons/default.cc:
1638         Likewise.
1639         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
1640         Likewise.
1641         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
1642         Likewise.
1643         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
1644         Likewise.
1646 2018-06-14  Daniel Trebbien <dtrebbien@gmail.com>
1647             Jonathan Wakely  <jwakely@redhat.com>
1649         PR libstdc++/83982
1650         * include/bits/vector.tcc (vector::_M_default_append(size_type)):
1651         Default-construct new elements before moving existing ones.
1652         * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
1653         New.
1655 2018-06-13  Jonathan Wakely  <jwakely@redhat.com>
1657         PR libstdc++/86127
1658         * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
1659         unused typedef.
1660         (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
1661         Use node allocator to create and destroy elements.
1662         (forward_list::_Tp_alloc_type): Remove unused typedef.
1663         (forward_list::_Alloc_traits): Use allocator_traits instead of
1664         __gnu_cxx::__alloc_traits.
1666 2018-06-13  François Dumont  <fdumont@gcc.gnu.org>
1668         * include/debug/helper_functions.h
1669         (__gnu_debug::_Safe_iterator<>): Add declaration.
1670         (__can_advance(_Ite, _Size)): New.
1671         (__can_advance(const _Safe_iterator<>&, _Size)): Overload declaration.
1672         * include/debug/functions.h
1673         (__gnu_debug::_Safe_iterator<>): Remove declaration.
1674         * include/debug/stl_iterator.h
1675         (__can_advance(const _Safe_iterator<>&)): New definition.
1676         * include/debug/stl_iterator.h
1677         (__can_advance(const std::reverse_iterator<>&, _Size)): New.
1678         (__can_advance(const std::move_iterator<>&, _Size)): New.
1679         * include/debug/macros.h (__glibcxx_check_can_increment): New.
1680         * include/debug/debug.h (__glibcxx_requires_can_increment): New.
1681         * include/bits/stl_algobase.h (fill_n): Use latter.
1682         * testsuite/25_algorithms/fill_n/2.cc: New.
1683         * testsuite/25_algorithms/fill_n/debug/1_neg.cc: New.
1684         * testsuite/25_algorithms/fill_n/debug/2_neg.cc: New.
1685         * testsuite/25_algorithms/fill_n/debug/3_neg.cc: New.
1686         * testsuite/25_algorithms/fill_n/debug/4_neg.cc: New.
1688         * include/debug/debug.h (__glibcxx_requires_can_increment_range): New.
1689         (__glibcxx_requires_can_decrement_range): New.
1691 2018-06-12  François Dumont  <fdumont@gcc.gnu.org>
1693         * include/debug/macros.h (__glibcxx_check_can_increment_range): New.
1694         (__glibcxx_check_can_decrement_range): New.
1695         * include/bits/stl_algobase.h (std::copy(_II, _II, _OI)): Use
1696         __glibcxx_requires_can_increment_range.
1697         (std::move(_II, _II, _OI)): Likewise.
1698         (std::copy_backward(_BI, _BI, _BI2)): Use
1699         __glibcxx_requires_can_decrement_range.
1700         (std::move_backward(_BI, _BI, _BI2)): Likewise.
1701         * testsuite/25_algorithms/copy_backward/debug/1_neg.cc: New.
1702         * testsuite/25_algorithms/copy_backward/debug/2_neg.cc: New.
1703         * testsuite/25_algorithms/copy_backward/debug/3_neg.cc: New.
1704         * testsuite/25_algorithms/equal/debug/1_neg.cc: New.
1705         * testsuite/25_algorithms/equal/debug/2_neg.cc: New.
1706         * testsuite/25_algorithms/equal/debug/3_neg.cc: New.
1708 2018-06-12  Jonathan Wakely  <jwakely@redhat.com>
1710         P0935R0 Eradicating unnecessarily explicit default constructors
1711         * include/bits/random.h (linear_congruential_engine)
1712         (mersenne_twister_engine, subtract_with_carry_engine, random_device)
1713         (uniform_real_distribution, normal_distribution)
1714         (lognormal_distribution, gamma_distribution, chi_squared_distribution)
1715         (cauchy_distribution, fisher_f_distribution, student_t_distribution)
1716         (bernoulli_distribution, binomial_distribution,geometric_distribution)
1717         (negative_binomial_distribution, exponential_distribution)
1718         (weibull_distribution, extreme_value_distribution): Add non-explicit
1719         default constructors. Remove default argument for first parameter of
1720         explicit constructors.
1721         (piecewise_constant_distribution, piecewise_linear_distribution):
1722         Make default constructor non-explicit.
1723         * include/bits/uniform_int_dist.h (uniform_int_distribution): Add
1724         non-explicit default constructors. Remove default argument for first
1725         parameter of explicit constructor.
1726         * include/ext/random
1727         (simd_fast_mersenne_twister_engine, beta_distribution)
1728         (rice_distribution, nakagami_distribution, pareto_distribution)
1729         (k_distribution, arcsine_distribution, hoyt_distribution)
1730         (triangular_distribution, von_mises_distribution)
1731         (hypergeometric_distribution, logistic_distribution)
1732         (uniform_inside_sphere_distribution): Likewise.
1733         (uniform_on_sphere_distribution): Make default constructor
1734         non-explicit.
1735         * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
1736         Test for non-explicit default constructor. Fix references to standard.
1737         * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
1738         Likewise.
1739         * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
1740         Likewise.
1741         * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
1742         Likewise.
1743         * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
1744         Likewise.
1745         * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
1746         Likewise.
1747         * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
1748         Likewise.
1749         * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
1750         Likewise.
1751         * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
1752         Likewise.
1753         * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
1754         Likewise.
1755         * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
1756         Likewise.
1757         * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
1758         Likewise.
1759         * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
1760         Likewise.
1761         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
1762         Likewise.
1763         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
1764         Likewise.
1765         * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
1766         Likewise.
1767         * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
1768         Likewise.
1769         * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
1770         Likewise.
1771         * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
1772         Likewise.
1773         * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
1774         Likewise.
1775         * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
1776         * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
1777         * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
1778         * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
1779         Likewise.
1780         * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
1781         * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
1782         * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
1783         * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
1784         Likewise.
1785         * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
1786         * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
1787         * testsuite/ext/random/triangular_distribution/cons/default.cc:
1788         Likewise.
1789         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
1790         Likewise.
1791         * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
1792         Likewise.
1793         * testsuite/ext/random/von_mises_distribution/cons/default.cc:
1794         Likewise.
1795         * testsuite/util/testsuite_common_types.h
1796         (implicitly_default_constructible): New helper.
1798 2018-06-08  Jonathan Wakely  <jwakely@redhat.com>
1800         * include/bits/ios_base.h (ios::Init::Init(const Init&))
1801         (ios::Init::operator=): Define as defaulted.
1802         * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)):
1803         Likewise.
1804         * include/bits/stream_iterator.h (istream_iterator::operator=)
1805         (ostream_iterator::operator=): Likewise.
1806         * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
1807         Likewise.
1808         * include/std/bitset (bitset::reference::reference(const reference&)):
1809         Likewise.
1810         * include/std/complex (complex<float>::complex(const complex&))
1811         (complex<double>::complex(const complex&))
1812         (complex<long double>::complex(const complex&)): Likewise.
1814 2018-06-07  Jonathan Wakely  <jwakely@redhat.com>
1816         * include/bits/regex.h (sub_match): Add noexcept to default
1817         constructor and length observer.
1818         (match_results): Add noexcept to default constructor and observers
1819         with no preconditions. Define destructor as defaulted.
1820         (operator==, operator!=, swap): Add noexcept.
1821         (regex_iterator): Add default member initializers and define default
1822         constructor and destructor as defaulted. Add noexcept to equality
1823         and dereference operators.
1825 2018-06-07  François Dumont  <fdumont@gcc.gnu.org>
1827         * src/c++11/debug.cc
1828         (_Safe_iterator_base::_M_detach()): Reset state only if needed.
1829         (_Safe_iterator_base::_M_detach_single()): Likewise.
1830         (_Safe_local_iterator_base::_M_detach()): Reset state only if needed.
1831         (_Safe_local_iterator_base::_M_detach_single()): Likewise.
1833 2018-06-06  Jonathan Wakely  <jwakely@redhat.com>
1835         * include/bits/shared_ptr_base.h (__shared_count): Remove redundant
1836         move of const value.
1838 2018-06-06  Jakub Jelinek  <jakub@redhat.com>
1840         PR c++/86068
1841         * include/bits/c++config: Check __cpp_transactional_memory >= 201500L
1842         rather than __cpp_transactional_memory >= 201505L.
1844 2018-06-06  Jonathan Wakely  <jwakely@redhat.com>
1846         PR libstdc++/86008
1847         * include/bits/quoted_string.h (_Quoted_string<basic_string_view, C>):
1848         Define new partial specialization.
1849         * include/std/iomanip (quoted(basic_string_view<C,T>, C, C)): Define
1850         new overload.
1851         (operator<<(basic_ostream<C,T>&, const _Quoted_string<S,C>&)): Use
1852         value not reference for iteration.
1853         * testsuite/27_io/manipulators/standard/char/quoted.cc: Adjust
1854         comment.
1855         * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
1856         * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
1857         comment.
1859 2018-06-05  Jonathan Wakely  <jwakely@redhat.com>
1861         * include/std/type_traits: Fix comment typos.
1863         * testsuite/27_io/filesystem/operations/read_symlink.cc: XFAIL for
1864         mingw* targets.
1865         * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
1866         * testsuite/experimental/filesystem/operations/read_symlink.cc:
1867         Likewise.
1869 2018-06-05  François Dumont  <fdumont@gcc.gnu.org>
1871         * include/bits/stl_tempbuf.h
1872         (_Temporary_buffer(_FwdIte, _FwdIte)): Delete, replaced by...
1873         (_Temporary_buffer(_FwdIte, size_type)): ...this, new.
1874         * include/ext/memory (temporary_buffer<>(_FwdIte, _FwdIte)): Adapt.
1875         * include/bits/stl_algo.h (__stable_partition): Adapt.
1876         (__inplace_merge): Adapt.
1877         (__stable_sort): Adapt.
1879 2018-06-04  Jonathan Wakely  <jwakely@redhat.com>
1881         PR libstdc++/85930
1882         * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
1883         unconditionally. Remove redundant declaration.
1884         [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
1885         alignment-specifier.
1887         * include/bits/postypes.h (fpos): Define special members as defaulted.
1889         PR libstdc++/85930
1890         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
1891         the static variable correctly.
1893 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
1895         PR libstdc++/78870 support std::filesystem on Windows
1896         * config.h.in: Regenerate.
1897         * configure: Regenerate.
1898         * configure.ac: Check for link, readlink and symlink.
1899         * include/bits/fs_path.h (path::operator/=(const path&)): Move
1900         definition out of class body.
1901         (path::is_absolute(), path::_M_append(path)): Likewise.
1902         (operator<<(basic_ostream, const path&)): Use std::quoted directly.
1903         (operator>>(basic_istream, path&)): Likewise.
1904         (u8path): Reorder definitions and fix Windows implementation.
1905         (path::is_absolute()): Define inline and fix for Windows.
1906         [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
1907         Define POSIX version inline.
1908         (path::_M_append(path)): Define inline.
1909         * include/experimental/bits/fs_path.h (path::is_absolute()): Move
1910         definition out of class body.
1911         (operator<<(basic_ostream, const path&)): Fix type of delimiter and
1912         escape characters.
1913         (operator>>(basic_istream, path&)): Likewise.
1914         (path::is_absolute()): Define inline and fix for Windows.
1915         * src/filesystem/dir-common.h (__gnu_posix): New namespace.
1916         (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
1917         (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
1918         Define as adaptors for Windows functions/types or as
1919         using-declarations for POSIX functions/types.
1920         (_Dir_base, get_file_type): Qualify names to use declarations from
1921         __gnu_posix namespace.
1922         (_Dir_base::is_dor_or_dotdot): New helper functions.
1923         * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
1924         names to use declarations from __gnu_posix namespace.
1925         * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
1926         (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
1927         (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
1928         (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
1929         (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
1930         (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
1931         Define as adaptors for Windows functions/types or as
1932         using-declarations for POSIX functions/types.
1933         (stat_type, do_copy_file): Qualify names to use declarations from
1934         __gnu_posix namespace.
1935         (do_space): Declare new function.
1936         (make_file_type): Only use S_ISLNK if defined.
1937         * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
1938         path::value_type not char.
1939         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
1940         names to use declarations from __gnu_posix namespace.
1941         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
1942         add implementation for Windows.
1943         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
1944         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
1945         [!_PC_PATH_MAX]: Don't use pathconf.
1946         [PATH_MAX]: Use if defined.
1947         (filesystem::current_path(const path&, error_code&))
1948         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
1949         (filesystem::last_write_time, filesystem::permissions): Use names
1950         from __gnu_posix.
1951         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
1952         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
1953         implementation for Windows.
1954         (filesystem::rename, filesystem::resize_file): Use names from
1955         __gnu_posix.
1956         (filesystem::space): Use do_space.
1957         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
1958         (filesystem::status, filesystem::symlink_status): Use names from
1959         __gnu_posix.
1960         (filesystem::temp_directory_path): Add implementation for Windows.
1961         * src/filesystem/path.cc (dot): Define constant.
1962         (path::replace_extension): Use dot.
1963         (path::_M_find_extension): Likewise. Use path::string_type not
1964         std::string.
1965         (path::_M_split_cmpts): Use dot.
1966         (filesystem_error::_M_get_what): Use u8string() not native().
1967         * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
1968         Qualify names to use declarations from __gnu_posix namespace.
1969         * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
1970         correct error_code.
1971         (filesystem::absolute(const path&, error_code&)): Add implementation
1972         for Windows.
1973         (char_ptr, filesystem::canonical): Use path::value_type not char.
1974         (do_copy_file): Use names from __gnu_posix.
1975         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
1976         sendfile.
1977         (filesystem::copy, create_dir, filesystem::create_directory): Qualify
1978         names to use declarations from __gnu_posix namespace.
1979         (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
1980         add implementation for Windows.
1981         (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
1982         (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
1983         [!_PC_PATH_MAX]: Don't use pathconf.
1984         [PATH_MAX]: Use if defined.
1985         (filesystem::current_path(const path&, error_code&))
1986         (filesystem::equivalent, do_stat, filesystem::hard_link_count)
1987         (filesystem::last_write_time, filesystem::permissions): Use names
1988         from __gnu_posix.
1989         (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
1990         (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
1991         implementation for Windows.
1992         (filesystem::rename, filesystem::resize_file): Use names from
1993         __gnu_posix.
1994         (do_space): Define.
1995         (filesystem::space): Use do_space.
1996         (filesystem::status, filesystem::symlink_status): Use names from
1997         __gnu_posix.
1998         (filesystem::temp_directory_path): Add implementation for Windows.
1999         * src/filesystem/std-path.cc
2000         [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
2001         Define for Windows.
2002         (dot): Define constant.
2003         (path::replace_extension, is_dot): Use dot.
2004         (path::lexically_normal): Check _M_type instead of calling
2005         non-existent function.
2006         (path::_M_find_extension): Use dot. Use path::string_type not
2007         std::string.
2008         (path::_M_split_cmpts): Use dot.
2009         (filesystem_error::_M_get_what): Use u8string() not native().
2010         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
2011         use symlinks.
2012         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
2013         Likewise.
2014         * testsuite/27_io/filesystem/operations/absolute.cc: Use
2015         __gnu_test::root_path() instead of "/" and add Windows-specific tests.
2016         * testsuite/27_io/filesystem/operations/canonical.cc: Use
2017         path::string() to get narrow string, not path::native().
2018         * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
2019         with std::filesystem::path not std::basic_string.
2020         * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
2021         * testsuite/27_io/filesystem/operations/exists.cc: Use
2022         __gnu_test::root_path() instead of "/".
2023         * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
2024         fstreams with std::filesystem::path not std::basic_string.
2025         * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
2026         path::string() to get narrow string.
2027         * testsuite/27_io/filesystem/operations/space.cc: Check results for
2028         errors, expect sensible values otherwise.
2029         * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
2030         helpers for adjusting the environment on Windows.
2031         * testsuite/27_io/filesystem/path/append/path.cc: Test
2032         Windows-specific behaviour.
2033         * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
2034         of path::string_type objects.
2035         * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
2036         string to wide string on Windows.
2037         * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
2038         for backslash as root-directory.
2039         * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
2040         path::string() to get narrow string.
2041         * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
2042         paths.
2043         * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
2044         not std::string.
2045         * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
2046         different definintion of absolute paths on Windows.
2047         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
2048         Do not use symlinks.
2049         * testsuite/experimental/filesystem/operations/absolute.cc: Test
2050         Windows behaviour.
2051         * testsuite/experimental/filesystem/operations/copy.cc: Construct
2052         fstreams with NTCTS not std::basic_string.
2053         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
2054         * testsuite/experimental/filesystem/operations/exists.cc: Use
2055         __gnu_test::root_path() instead of "/".
2056         * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
2057         fstreams with NTCTS not std::basic_string.
2058         * testsuite/experimental/filesystem/operations/last_write_time.cc:
2059         Use path::string() to get narrow string.
2060         * testsuite/experimental/filesystem/operations/space.cc: Use
2061         __gnu_test::root_path() instead of "/".
2062         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2063         Add helpers for adjusting the environment on Windows.
2064         * testsuite/experimental/filesystem/path/append/path.cc: Use
2065         path::string() to get narrow strings for comparisons.
2066         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
2067         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
2068         Likewise.
2069         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
2070         * testsuite/experimental/filesystem/path/native/string.cc: Use
2071         string_type not std::string.
2072         * testsuite/experimental/filesystem/path/query/is_absolute.cc:
2073         Adjust for different definintion of absolute paths on Windows.
2074         * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
2075         function.
2076         (__gnu_test::scoped_file): Construct fstreams with NTCTS not
2077         std::basic_string.
2079 2018-05-31  Jonathan Wakely  <jwakely@redhat.com>
2081         PR libstdc++/85951
2082         * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
2083         uint_least16_t and uint_least32_t.
2084         (__make_unsigned<wchar_t>): Define unconditionally.
2085         (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
2086         typedefs.
2087         (__make_unsigned_selector_base): New type to provide helper templates.
2088         (__make_unsigned_selector<_Tp, false, true>): Reimplement using
2089         __make_unsigned_selector_base helpers.
2090         (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
2091         (__make_signed_selector<_Tp, true, false>): Remove intermediate
2092         typedefs.
2093         (__make_signed<wchar_t>, __make_signed<char16_t>)
2094         (__make_signed<char32_t>)): Define unconditionally.
2095         * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
2096         wchar_t, char16_t and char32_t are transformed correctly.
2097         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
2098         dg-error lineno.
2099         * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
2100         wchar_t, char16_t and char32_t are transformed correctly.
2101         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
2102         dg-error lineno.
2104 2018-05-29  Jonathan Wakely  <jwakely@redhat.com>
2106         * include/std/variant (__erased_dtor): Qualify call to __get.
2108 2018-05-27  François Dumont  <fdumont@gcc.gnu.org>
2110         * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
2111         (_Rb_tree(const allocator_type&)): Use latter.
2112         * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
2113         (map(initializer_list<value_type>, const allocator_type&)): Likewise.
2114         (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
2115         * include/bits/stl_multimap.h
2116         (multimap(const allocator_type&)): Likewise.
2117         (multimap(initializer_list<value_type>, const allocator_type&)):
2118         Likewise.
2119         (multimap(_InputIterator, _InputIterator, const allocator_type&)):
2120         Likewise.
2121         * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
2122         (set(initializer_list<value_type>, const allocator_type&)): Likewise.
2123         (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
2124         * include/bits/stl_multiset.h
2125         (multiset(const allocator_type&)): Likewise.
2126         (multiset(initializer_list<value_type>, const allocator_type&)):
2127         Likewise.
2128         (multiset(_InputIterator, _InputIterator, const allocator_type&)):
2129         Likewise.
2131 2018-05-25  François Dumont  <fdumont@gcc.gnu.org>
2133         PR libstdc++/85768
2134         * src/c++11/debug.cc: Remove backtrace usage.
2136 2018-05-24  Maya Rashish  <coypu@sdf.org>
2138         PR target/85904
2139         * crossconfig.m4: Test for aligned_alloc on netbsd.
2140         * configure: Regenerate.
2142 2018-05-24  Jonathan Wakely  <jwakely@redhat.com>
2144         PR libstdc++/69769
2145         PR libstdc++/85886
2146         * include/bits/atomic_base.h (__atomic_base::value_type)
2147         (__atomic_base::difference_type): Add new typedefs.
2148         * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
2149         (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
2150         (atomic<T*>::operator++, atomic<T*>::operator--)
2151         (atomic<T*>::operator+=, atomic<T*>::operator-=)
2152         (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
2153         to enforce C++17 requirement on pointer arithmetic.
2154         (__atomic_val_t, __atomic_diff_t): New alias templates.
2155         (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
2156         (atomic_compare_exchange_weak_explicit)
2157         (atomic_compare_exchange_strong_explicit, atomic_store)
2158         (atomic_exchange, atomic_compare_exchange_weak)
2159         (atomic_compare_exchange_strong): Use __atomic_val_t to make
2160         scalar parameters be non-deduced contexts.
2161         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
2162         (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
2163         atomic instead of __atomic_base, and use __atomic_diff_t for scalar
2164         parameters.
2165         (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
2166         (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
2167         (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
2168         (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
2169         (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
2170         address types.
2171         * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
2172         * testsuite/29_atomics/atomic/69769.cc: New test.
2173         * testsuite/29_atomics/atomic/nonmembers.cc: New test.
2174         * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
2175         Disable test for C++17 and later.
2176         * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
2177         * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
2178         * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
2179         test.
2181 2018-05-23  Jonathan Wakely  <jwakely@redhat.com>
2183         * include/bits/fs_path.h (path::__is_encoded_char): Change from class
2184         template to alias template.
2185         (path::__value_type_is_char): Use remove_const_t.
2186         (path:_S_string_from_iter): New helper function.
2187         (path::_S_convert(InputIter, __null_terminated))
2188         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
2189         Use _S_string_from_iter.
2190         (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
2191         rep for COW strings.
2192         * include/experimental/bits/fs_path.h (path::__is_encoded_char):
2193         Change from class template to alias template.
2194         (path::__value_type_is_char): Use remove_const.
2195         (path:_S_string_from_iter): New helper function.
2196         (path::_S_convert(InputIter, __null_terminated))
2197         (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
2198         Use _S_string_from_iter.
2199         * testsuite/27_io/filesystem/path/append/source.cc: Test appending
2200         wide strings.
2201         * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
2202         string equality, not path equivalence.
2203         * testsuite/27_io/filesystem/path/construct/format.cc: Check
2204         construction from std::string and std::wstring and input iterators.
2205         * testsuite/27_io/filesystem/path/construct/locale.cc: Check
2206         construction from iterators.
2207         * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
2208         exact string equality, not path equivalence.
2209         * testsuite/experimental/filesystem/path/construct/locale.cc: Check
2210         construction from iterators.
2212         * include/bits/fs_path.h (path::_M_type): Change default member
2213         initializer to _Filename.
2214         (path::begin): Create past-the-end iterator for empty path.
2215         * src/filesystem/std-path.cc (path::remove_filename()): Remove
2216         debugging check.
2217         (path::has_relative_path()): Return false for empty filenames.
2218         (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
2219         Fix offset of empty final component.
2220         * testsuite/27_io/filesystem/path/itr/components.cc: New.
2221         * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
2223 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
2225         Add support for opening file streams from wide character strings.
2226         * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
2227         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
2228         Define new overload.
2229         * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
2230         (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
2231         Declare new overload.
2232         * configure.ac: Check for _wfopen.
2233         * crossconfig.m4: Likewise.
2234         * configure: Regenerate.
2235         * config.h.in: Regenerate.
2236         * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
2237         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
2238         Define new overload.
2239         * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
2240         (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
2241         Declare new overload.
2242         [_GLIBCXX_HAVE__WFOPEN]
2243         (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
2244         (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
2245         (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
2246         (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
2247         (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
2248         (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
2249         new overloads.
2250         * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
2251         * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
2252         * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
2253         * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
2254         * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
2255         * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
2256         * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
2258 2018-05-21  François Dumont  <fdumont@gcc.gnu.org>
2260         PR libstdc++/85845
2261         * include/bits/stl_tree.h
2262         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
2263         qualification.
2265 2018-05-21  Jonathan Wakely  <jwakely@redhat.com>
2267         * src/filesystem/std-ops.cc (absolute): Report an error for empty
2268         paths.
2269         (weakly_canonical(const path&)): Do not call canonical on empty path.
2270         (weakly_canonical(const path&, error_code&)): Likewise.
2271         * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
2273         PR libstdc++/85818
2274         * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
2275         dg-require-filesystem-ts.
2277         PR libstdc++/85843
2278         * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
2279         initialize base class to avoid warnings.
2281 2018-05-19  Jonathan Wakely  <jwakely@redhat.com>
2283         * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
2284         [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
2285         little_endian element in bitmask.
2286         * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
2287         * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
2289 2018-05-18  François Dumont  <fdumont@gcc.gnu.org>
2291         * include/bits/stl_tree.h
2292         (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
2293         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
2294         (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
2295         (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
2296         * include/debug/map.h
2297         (map(map&&, const_allocator_type&)): Add noexcept qualitication.
2298         * include/debug/multimap.h
2299         (multimap(multimap&&, const_allocator_type&)): Likewise.
2300         * include/debug/set.h
2301         (set(set&&, const_allocator_type&)): Likewise.
2302         * include/debug/multiset.h
2303         (multiset(multiset&&, const_allocator_type&)): Likewise.
2304         * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
2305         Add checks.
2306         * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
2307         Add checks.
2308         * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
2309         Add checks.
2310         * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
2311         Add checks.
2312         * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
2313         Add checks.
2314         * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
2315         Add checks.
2316         * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
2317         Add checks.
2318         * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
2319         Add checks.
2321 2018-05-18  Jason Merrill  <jason@redhat.com>
2323         * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
2324         for conversion to const_iterator.  Add defaulted copy ops.
2325         * libsupc++/new (bad_alloc): Add defaulted copy ops.
2326         * libsupc++/exception.h (exception): Add defaulted copy ops.
2327         * include/std/system_error (system_error): Add defaulted copy ops.
2328         * include/std/stdexcept (domain_error, invalid_argument)
2329         (length_error, out_of_range, range_error, overflow_error)
2330         (underflow_error): Add defaulted copy ops.
2331         * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
2332         copy assignment.
2333         * include/bits/allocator.h (allocator): Add defaulted copy assignment.
2334         * include/ext/throw_allocator.h (condition_base): Add defaulted
2335         default and copy ctor and copy assignment.
2337 2018-05-18  Jonathan Wakely  <jwakely@redhat.com>
2339         PR libstdc++/85098
2340         * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
2341         (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
2342         (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
2343         (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
2344         definitions.
2345         * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
2346         whitespace.
2347         * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
2348         braces around body of do-while.
2349         * testsuite/28_regex/basic_regex/85098.cc: New
2351 2018-05-17  Jonathan Wakely  <jwakely@redhat.com>
2353         PR libstdc++/85818
2354         * src/filesystem/path.cc (path::preferred_separator): Add used
2355         attribute.
2356         * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
2358         PR libstdc++/85812
2359         * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
2360         * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
2361         Refactor to separate non-throwing and throwing implementations.
2362         [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
2363         if constructing the object throws.
2365 2018-05-15  Jonathan Wakely  <jwakely@redhat.com>
2367         PR libstdc++/85749
2368         * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
2369         (linear_congruential_engine, mersenne_twister_engine)
2370         (subtract_with_carry_engine, discard_block_engine)
2371         (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
2372         constrain function templates taking seed sequences.
2373         * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
2374         (mersenne_twister_engine::seed(_Sseq&))
2375         (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
2376         match declarations.
2377         * include/ext/random (simd_fast_mersenne_twister_engine): Use
2378         __is_seed_seq to constrain function templates taking seed sequences.
2379         * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
2380         Change return type to match declaration.
2381         * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
2382         New.
2383         * testsuite/26_numerics/random/independent_bits_engine/cons/
2384         seed_seq2.cc: New.
2385         * testsuite/26_numerics/random/linear_congruential_engine/cons/
2386         seed_seq2.cc: New.
2387         * testsuite/26_numerics/random/mersenne_twister_engine/cons/
2388         seed_seq2.cc: New.
2389         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
2390         * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
2391         New.
2392         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
2393         seed_seq2.cc: New.
2394         * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
2395         seed_seq2.cc: New.
2397         PR libstdc++/83891
2398         * include/bits/fs_path.h (path::is_absolute()): Use same definition
2399         for all operating systems.
2400         * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
2401         * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
2402         * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
2403         * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
2405         * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
2406         unused <vector> header.
2407         * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
2408         * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
2409         * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
2410         * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
2411         * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
2412         Likewise.
2413         * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
2414         Likewise.
2415         * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
2416         * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
2417         * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
2418         * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
2419         * testsuite/experimental/filesystem/path/decompose/extension.cc:
2420         Likewise.
2421         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
2422         * testsuite/experimental/filesystem/path/query/has_extension.cc:
2423         Likewise.
2424         * testsuite/experimental/filesystem/path/query/has_filename.cc:
2425         Likewise.
2426         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
2427         Likewise.
2428         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
2429         Likewise.
2430         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
2431         Likewise.
2432         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
2433         Likewise.
2434         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
2435         Likewise.
2436         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
2437         * testsuite/experimental/filesystem/path/query/is_relative.cc:
2438         Likewise.
2440         PR libstdc++/84159
2441         * include/bits/fs_path.h (path::operator/=, path::append): Construct
2442         temporary path before calling _M_append.
2443         (path::_M_append): Change parameter to path and implement C++17
2444         semantics.
2445         * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
2446         and more examples from the standard.
2447         * testsuite/27_io/filesystem/path/append/source.cc: New.
2448         * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
2449         * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
2451         * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
2452         __invoke to prevent ADL.
2454 2018-05-14  Jonathan Wakely  <jwakely@redhat.com>
2456         PR libstdc++/81256
2457         * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
2458         exceptions from _M_terminate_output().
2459         * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
2460         exceptions from close().
2461         * testsuite/27_io/basic_filebuf/close/81256.cc: New.
2463         * include/bits/valarray_array.h (__valarray_get_memory): Remove.
2464         (__valarray_get_storage): Call operator new directly. Remove ignored
2465         top-level restrict qualifier and add malloc attribute instead.
2466         (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
2468         PR libstdc++/67554
2469         * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
2470         (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
2472         PR libstdc++/82966
2473         * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
2474         instead of type.
2475         * testsuite/23_containers/set/modifiers/node_swap.cc: New.
2477 2018-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
2479         PR libstdc++/80165
2480         * testsuite/20_util/variant/80165.cc: New.
2482 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
2484         * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
2485         * doc/xml/manual/debug_mode.xml: Add array and forward_list to list
2486         of C++11 containers with Debug Mode support.
2487         * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
2488         * doc/html/*: Regenerate.
2490 2018-05-10  Jason Merrill  <jason@redhat.com>
2492         * include/bits/regex_compiler.h (_S_cache_size): Change from
2493         function to variable.
2495 2018-05-10  Edward Smith-Rowland  <3dw4rd@verizon.net>
2497         PR libstdc++/83140 - assoc_legendre returns negated value when m is odd
2498         * include/tr1/legendre_function.tcc (__assoc_legendre_p): Add __phase
2499         argument defaulted to +1.  Doxy comments on same.
2500         * testsuite/special_functions/02_assoc_legendre/
2501         check_value.cc: Regen.
2502         * testsuite/tr1/5_numerical_facilities/special_functions/
2503         02_assoc_legendre/check_value.cc: Regen.
2505 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
2507         PR libstdc++/85729
2508         * include/bits/c++config.h (__replacement_assert): Add linkage
2509         specification.
2510         * include/bits/std_abs.h: Add comment to closing brace of block.
2511         * include/c_global/cstddef: Add linkage specification.
2512         * include/c_global/cstring: Likewise.
2513         * include/c_global/cwchar: Likewise.
2515 2018-05-09  François Dumont  <fdumont@gcc.gnu.org>
2517         * include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant()):
2518         Rename in...
2519         (_Safe_iterator<>::_S_constant()): ...that.
2520         * include/debug/safe_local_iterator.h
2521         (_Safe_local_iterator<>::_M_constant()): Rename in...
2522         (_Safe_local_iterator<>::_S_constant()): ...that.
2523         * include/debug/formatter.h: Remove bits/cpp_type_traits.h include.
2524         (_Iterator_state::__rbegin): New.
2525         (_Iterator_state::__rmiddle): New.
2526         (_Iterator_state::__rend): New.
2527         (_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
2528         _Is_iterator)): Use _Safe_iterator<>::_S_constant. Grab normal underlying
2529         iterator type.
2530         (_Parameter::_Parameter(const _Safe_local_iterator<>&, const char*,
2531         _Is_iterator)): Likewise.
2532         (_Parameter::_S_reverse_state(_Iterator_state)): New.
2533         (_Parameter(__gnu_cxx::__normal_iterator<> const&, const char*,
2534         _Is_iterator)): New.
2535         (_Parameter(std::reverse_iterator<> const&, const char*,
2536         _Is_iterator)): New.
2537         (_Parameter(std::reverse_iterator<_Safe_iterator<>> const&,
2538         const char*, _Is_iterator)): New.
2539         (_Parameter(std::move_iterator<> const&, const char*, _Is_iterator):
2540         New.
2541         (_Parameter(std::move_iterator<_Safe_iterator<>> const&, const char*,
2542         _Is_iterator)): New.
2543         * testsuite/24_iterators/move_iterator/debug_neg.cc: New.
2544         * testsuite/24_iterators/normal_iterator/debug_neg.cc: New.
2545         * testsuite/24_iterators/reverse_iterator/debug_neg.cc: New.
2547 2018-05-09  Jonathan Wakely  <jwakely@redhat.com>
2549         * include/bits/std_function.h (_Base_manager::_M_get_pointer):
2550         Use constexpr if in C++17 mode.
2551         (_Base_manager::_M_clone(_Any_data&, const _Any_data&, true_type)):
2552         Copy from const object.
2553         * testsuite/20_util/function/cons/non_copyconstructible.cc: New.
2555 2018-05-08  François Dumont  <fdumont@gcc.gnu.org>
2557         * src/c++11/debug.cc [_GLIBCXX_HAVE_EXECINFO_H]: Include execinfo.h.
2558         [_GLIBCXX_HAVE_EXECINFO_H](_Error_formatter::_M_error): Render
2559         backtrace.
2561         * include/debug/macros.h (__glibcxx_check_valid_range_at): New.
2562         * include/debug/functions.h (__check_valid_range): Use latter.
2563         * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
2564         use latter.
2565         * include/debug/deque
2566         (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
2567         * include/debug/forward_list
2568         (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
2569         Likewise.
2570         * include/debug/list
2571         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2572         * include/debug/list
2573         (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2574         * include/debug/map.h
2575         (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2576         (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
2577         Likewise.
2578         * include/debug/multimap.h
2579         (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2580         (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
2581         const _Alloc&)): Likewise.
2582         * include/debug/set.h
2583         (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2584         (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
2585         Likewise.
2586         * include/debug/multiset.h
2587         (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
2588         (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
2589         const _Alloc&)): Likewise.
2590         * include/debug/string
2591         (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
2592         Likewise.
2593         * include/debug/unordered_map
2594         (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
2595         Likewise.
2596         (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
2597         const _Alloc&)): Likewise.
2598         * include/debug/unordered_set
2599         (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
2600         Likewise.
2601         (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
2602         const _Alloc&)): Likewise.
2603         * include/debug/vector
2604         (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
2606         * include/debug/formatter.h (_Error_formatter::_M_function): New.
2607         (_Error_formatter(const char*, unsigned int)): Adapt.
2608         (_Error_formatter::_M_at): Rename in...
2609         (_Error_formatter::_S_at): ...that and adapt.
2610         * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): New.
2611         (_GLIBCXX_DEBUG_VERIFY_AT, _GLIBCXX_DEBUG_VERIFY): Adapt.
2612         * src/c++11/debug.cc (_Error_formatter::_M_error): Render _M_function
2613         when available.
2615 2018-05-08  Jonathan Wakely  <jwakely@redhat.com>
2617         * include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
2618         Use normal std::vector even in Debug Mode.
2620         PR libstdc++/85672
2621         * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
2622         to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
2623         * include/Makefile.in: Regenerate.
2624         * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
2625         within conditional block.
2627 2018-05-07  Jonathan Wakely  <jwakely@redhat.com>
2629         * doc/xml/manual/using.xml (table.cmd_options): Document that the
2630         C++17 Filesystem implementation also needs -lstdc++fs.
2632         PR libstdc++/85671
2633         * include/bits/fs_path.h (operator/): Permit copy elision.
2634         * include/experimental/bits/fs_path.h (operator/): Likewise.
2636 2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>
2638         Moar PR libstdc++/80506
2639         * include/bits/random.tcc (gamma_distribution::__generate_impl()):
2640         Fix magic number used in loop condition.
2642 2018-05-04  Jonathan Wakely  <jwakely@redhat.com>
2644         PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
2645         * include/std/optional (_Optional_payload): Add noexcept to default
2646         constructor. Re-indent.
2647         (_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
2648         constructor for copying disengaged payloads.
2649         (_Optional_payload<_Tp, true, false, true>): Likewise.
2650         (_Optional_payload<_Tp, true, true, false>): Likewise.
2651         (_Optional_payload<_Tp, true, false, false>): Likewise.
2652         * testsuite/20_util/optional/cons/85642.cc: New.
2653         * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.
2655 2018-05-03  Jonathan Wakely  <jwakely@redhat.com>
2657         PR libstdc++/82644
2658         * include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
2659         inline definitions instead of using-declarations.
2660         [__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
2661         * testsuite/tr1/5_numerical_facilities/special_functions/
2662         07_conf_hyperg/compile_cxx17.cc: New.
2663         * testsuite/tr1/5_numerical_facilities/special_functions/
2664         17_hyperg/compile_cxx17.cc: New.
2666         PR libstdc++/84769
2667         * include/std/variant (visit): Qualify std::get call.
2669         PR libstdc++/85632 use uintmax_t for arithmetic
2670         * src/filesystem/ops.cc (experimental::filesystem::space): Perform
2671         arithmetic in result type.
2672         * src/filesystem/std-ops.cc (filesystem::space): Likewise.
2673         * testsuite/27_io/filesystem/operations/space.cc: Check total capacity
2674         is greater than free space.
2675         * testsuite/experimental/filesystem/operations/space.cc: New.
2677         * testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
2678         * testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
2679         New.
2680         * testsuite/20_util/remove_cvref/value.cc: New.
2681         * testsuite/20_util/remove_cvref/value_ext.cc: New.
2683         PR libstdc++/84087 LWG DR 2268 basic_string default arguments
2684         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
2685         (append(const basic_string&, size_type, size_type)
2686         (assign(const basic_string&, size_type, size_type)
2687         (insert(size_type, const basic_string&, size_type, size_type)
2688         (replace(size_type,size_type,const basic_string&,size_type,size_type)
2689         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
2690         Add default arguments (LWG 2268).
2691         [_GLIBCXX_USE_CXX11_ABI=0]
2692         (append(const basic_string&, size_type, size_type)
2693         (assign(const basic_string&, size_type, size_type)
2694         (insert(size_type, const basic_string&, size_type, size_type)
2695         (replace(size_type,size_type,const basic_string&,size_type,size_type)
2696         (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
2697         Likewise.
2698         * testsuite/21_strings/basic_string/dr2268.cc: New test.
2700         PR libstdc++/84535
2701         * include/std/thread (thread::__not_same): New SFINAE helper.
2702         (thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
2703         first argument is not a std::thread. Add static assertion to check
2704         INVOKE expression is valid.
2705         (thread::thread(thread&), thread::thread(const thread&&)): Remove.
2706         (thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
2707         __invoke_result for return types and remove exception specifications.
2708         * testsuite/30_threads/thread/cons/84535.cc: New.
2710         * include/std/future (__async_result_of): Use __invoke_result instead
2711         of result_of.
2713         * include/std/any (any_cast): Use __remove_cvref_t.
2714         * include/std/tuple (__make_tuple): Likewise.
2715         * include/std/type_traits (__remove_cvref_t): Define.
2716         (__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
2717         [__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
2718         * include/std/variant (__erased_hash): Use __remove_cvref_t.
2720 2018-05-02  François Dumont  <fdumont@gcc.gnu.org>
2722         * include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
2723         ensure overloaded comma not used.
2724         * include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
2725         * include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
2726         * include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
2727         * testsuite/23_containers/deque/modifiers/assign/1.cc: New.
2728         * testsuite/23_containers/list/modifiers/assign/1.cc: New.
2729         * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
2730         * testsuite/23_containers/vector/modifiers/assign/1.cc: New.
2732 2018-05-02  Jonathan Wakely  <jwakely@redhat.com>
2734         PR libstdc++/68197
2735         * include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
2736         indices to unsigned.
2737         * src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
2738         as failure. Refactor error handling.
2739         * testsuite/27_io/ios_base/storage/68197.cc: New.
2741         PR libstdc++/57997
2742         PR libstdc++/83860
2743         * include/bits/gslice_array.h (gslice_array): Define default
2744         constructor as deleted, as per C++11 standard.
2745         * include/bits/mask_array.h (mask_array): Likewise.
2746         * include/bits/slice_array.h (slice_array): Likewise.
2747         * include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
2748         to namespace __detail.
2749         (_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
2750         members.
2751         * include/bits/valarray_before.h (_ValArrayRef): New helper for type
2752         of data members in closure objects.
2753         (_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
2754         (_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
2755         __detail.
2756         (_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
2757         (_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
2758         (_SBase::_M_expr): Use _ValArrayRef for type of data members.
2759         * include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
2760         (_ValFunClos, _RefFunClos): Move to namespace __detail and add
2761         using-declarations to namespace std.
2762         * testsuite/26_numerics/valarray/83860.cc: New.
2764         * testsuite/backward/strstream_move.cc: Remove duplicate function
2765         call.
2767         PR libstdc++/69608
2768         * include/backward/strstream (strstreambuf): Define move constructor
2769         and move assignment operator.
2770         (istrstream, ostrstream, strstream): Likewise.
2771         * testsuite/backward/strstream_move.cc: New.
2773 2018-05-01  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>
2775         PR libstdc++/84654
2776         * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
2777         * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
2778         * configure: Regenerate.
2779         * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
2780         based on ENABLE_FLOAT128.
2781         * include/Makefile.in: Regenerate.
2782         * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
2783         [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
2784         _GLIBCXX_USE_FLOAT128.
2786 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
2788         * configure: Regenerated.
2790 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
2792         * configure: Regenerated.
2794 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
2795             Jakub Jelinek  <jakub@redhat.com>
2797         PR libstdc++/85442
2798         * src/c++11/Makefile.am: Don't generate debuginfo again for
2799         cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
2800         * src/c++11/Makefile.in: Regenerate.
2802 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
2804         PR libstdc++/84442
2805         * testsuite/30_threads/thread/cons/terminate.cc
2806         [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
2808 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
2810         PR jit/85384
2811         * configure: Regenerate.
2813 2018-04-16  Jonathan Wakely  <jwakely@redhat.com>
2815         * testsuite/experimental/filesystem/file_status/1.cc: Add
2816         -DUSE_FILESYSTEM_TS to dg-options.
2817         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
2818         Likewise.
2819         * testsuite/experimental/filesystem/iterators/pop.cc: Likewise.
2820         * testsuite/experimental/filesystem/iterators/
2821         recursive_directory_iterator.cc: Likewise.
2822         * testsuite/experimental/filesystem/operations/absolute.cc: Likewise.
2823         * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
2824         * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
2825         * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
2826         * testsuite/experimental/filesystem/operations/create_directories.cc:
2827         Likewise.
2828         * testsuite/experimental/filesystem/operations/create_directory.cc:
2829         Likewise.
2830         * testsuite/experimental/filesystem/operations/create_symlink.cc:
2831         Likewise.
2832         * testsuite/experimental/filesystem/operations/current_path.cc:
2833         Likewise.
2834         * testsuite/experimental/filesystem/operations/equivalent.cc: Likewise.
2835         * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
2836         * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
2837         * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
2838         * testsuite/experimental/filesystem/operations/last_write_time.cc:
2839         Likewise.
2840         * testsuite/experimental/filesystem/operations/permissions.cc:
2841         Likewise.
2842         * testsuite/experimental/filesystem/operations/read_symlink.cc:
2843         Likewise.
2844         * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
2845         * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
2846         * testsuite/experimental/filesystem/operations/status.cc: Likewise.
2847         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2848         Likewise.
2849         * testsuite/experimental/filesystem/path/append/path.cc: Likewise.
2850         * testsuite/experimental/filesystem/path/assign/assign.cc: Likewise.
2851         * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
2852         * testsuite/experimental/filesystem/path/compare/compare.cc: Likewise.
2853         * testsuite/experimental/filesystem/path/compare/path.cc: Likewise.
2854         * testsuite/experimental/filesystem/path/compare/strings.cc: Likewise.
2855         * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
2856         * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
2857         * testsuite/experimental/filesystem/path/construct/copy.cc: Likewise.
2858         * testsuite/experimental/filesystem/path/construct/default.cc:
2859         Likewise.
2860         * testsuite/experimental/filesystem/path/construct/locale.cc: Likewise.
2861         * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
2862         * testsuite/experimental/filesystem/path/construct/string_view.cc:
2863         Likewise.
2864         * testsuite/experimental/filesystem/path/decompose/extension.cc:
2865         Likewise.
2866         * testsuite/experimental/filesystem/path/decompose/filename.cc:
2867         Likewise.
2868         * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
2869         Likewise.
2870         * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
2871         Likewise.
2872         * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
2873         Likewise.
2874         * testsuite/experimental/filesystem/path/decompose/root_name.cc:
2875         Likewise.
2876         * testsuite/experimental/filesystem/path/decompose/root_path.cc:
2877         Likewise.
2878         * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
2879         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
2880         Likewise.
2881         * testsuite/experimental/filesystem/path/itr/traversal.cc: Likewise.
2882         * testsuite/experimental/filesystem/path/modifiers/clear.cc: Likewise.
2883         * testsuite/experimental/filesystem/path/modifiers/make_preferred.cc:
2884         Likewise.
2885         * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
2886         Likewise.
2887         * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
2888         Likewise.
2889         * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
2890         Likewise.
2891         * testsuite/experimental/filesystem/path/modifiers/swap.cc: Likewise.
2892         * testsuite/experimental/filesystem/path/native/string.cc: Likewise.
2893         * testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
2894         Likewise.
2895         * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
2896         * testsuite/experimental/filesystem/path/query/has_extension.cc:
2897         Likewise.
2898         * testsuite/experimental/filesystem/path/query/has_filename.cc:
2899         Likewise.
2900         * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
2901         Likewise.
2902         * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
2903         Likewise.
2904         * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
2905         Likewise.
2906         * testsuite/experimental/filesystem/path/query/has_root_name.cc:
2907         Likewise.
2908         * testsuite/experimental/filesystem/path/query/has_root_path.cc:
2909         Likewise.
2910         * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
2911         * testsuite/experimental/filesystem/path/query/is_relative.cc:
2912         Likewise.
2914 2018-04-13  Jonathan Wakely  <jwakely@redhat.com>
2916         * src/c++11/Makefile.am: Fix sed command.
2917         * src/c++11/Makefile.in: Regenerate.
2919         * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
2920         handle mangled names starting with double underscores on darwin.
2921         * src/c++11/Makefile.in: Regenerate.
2923 2018-04-12  Jonathan Wakely  <jwakely@redhat.com>
2925         * src/c++11/Makefile.am: Fix comment.
2926         * src/c++11/Makefile.in: Regenerate.
2927         * src/c++11/cxx11-ios_failure.cc: Fix comment.
2928         * src/c++98/ios_failure.cc: Likewise.
2930         * src/c++11/ios.cc: Remove redundant macro definition.
2932 2018-04-11  Jonathan Wakely  <jwakely@redhat.com>
2934         * doc/xml/manual/abi.xml: Document header locations in recent
2935         releases.
2936         * doc/xml/manual/evolution.xml: Add API changes since GCC 5.
2937         * doc/xml/manual/spine.xml: Update copyright years.
2938         * doc/xml/manual/strings.xml: Adjust tolower example to avoid
2939         undefined behaviour.
2940         * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
2941         * doc/html/*: Regenerate.
2943 2018-04-10  Jonathan Wakely  <jwakely@redhat.com>
2945         * doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
2946         * doc/xml/manual/backwards_compatibility.xml: Likewise.
2947         * doc/xml/manual/containers.xml: Likewise.
2948         * doc/xml/manual/debug_mode.xml: Likewise.
2949         * doc/xml/manual/extensions.xml: Likewise.
2950         * doc/xml/manual/policy_data_structures_biblio.xml: Likewise.
2951         * doc/xml/manual/using.xml: Likewise.
2952         * doc/xml/manual/utilities.xml: Likewise.
2954         PR libstdc++/85222
2955         * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
2956         cxx11-ios_failure.cc to rewrite type info for __ios_failure.
2957         * src/c++11/Makefile.in: Regenerate.
2958         * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
2959         New types.
2960         [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
2961         * src/c++11/ios.cc (__throw_ios_failure): Remove definition.
2962         * src/c++98/ios_failure.cc (__construct_ios_failure)
2963         (__destroy_ios_failure, is_ios_failure_handler): New functions.
2964         [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
2965         * testsuite/27_io/ios_base/failure/dual_abi.cc: New.
2966         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
2967         handler types, to always catch std::ios_base::failure.
2968         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
2969         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
2970         exceptions_failbit.cc: Likewise.
2971         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
2972         exceptions_failbit.cc: Likewise.
2973         * testsuite/27_io/basic_istream/extractors_other/char/
2974         exceptions_null.cc: Likewise.
2975         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
2976         exceptions_null.cc: Likewise.
2977         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
2978         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
2979         * testsuite/27_io/basic_ostream/inserters_other/char/
2980         exceptions_null.cc: Likewise.
2981         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
2982         exceptions_null.cc: Likewise.
2983         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
2985 2018-04-05  Jonathan Wakely  <jwakely@redhat.com>
2987         * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
2988         __get calls to avoid ADL and avoid ambiguity due to Clang bug.
2990 2018-04-03  Jonathan Wakely  <jwakely@redhat.com>
2992         PR libstdc++/85183
2993         * include/std/variant (_Move_assign_base::operator=): Fix incorrect
2994         value categories.
2995         * testsuite/20_util/variant/85183.cc: New.
2997 2018-03-26  Jonathan Wakely  <jwakely@redhat.com>
2999         * include/std/variant (__get): Qualify calls to avoid ADL.
3000         (__select_index): Adjust whitespace.
3001         (variant): Add using-declaration to workaround Clang bug.
3003 2018-03-22  Jonathan Wakely  <jwakely@redhat.com>
3005         PR libstdc++/85040
3006         * include/bits/stl_function.h (greater::__not_overloaded)
3007         (less::__not_overloaded, greater_equal::__not_overloaded)
3008         (less_equal::__not_overloaded): Fix ambiguous specializations.
3009         * testsuite/20_util/function_objects/comparisons_pointer.cc: Add
3010         tests for type with overloaded operators.
3012 2018-03-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3014         PR libstdc++/77691
3015         * testsuite/experimental/memory_resource/resource_adaptor.cc:
3016         xfail execution on 32-bit Solaris/x86.
3018 2018-03-21  Jonathan Wakely  <jwakely@redhat.com>
3020         * testsuite/20_util/function_objects/comparisons_pointer.cc: Use
3021         VERIFY instead of assert.
3022         * testsuite/20_util/hash/84998.cc: New test.
3023         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
3024         copy of test adjusted for Debug Mode.
3025         * testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
3026         test in Debug Mode.
3028 2018-03-20  François Dumont  <fdumont@gcc.gnu.org>
3030         PR libstdc++/84998
3031         * include/bits/stl_bvector.h: Fix std::hash friend declaration.
3032         * include/std/bitset: Likewise.
3033         * include/bits/stl_map.h (std::map<>): Fix _Rb_tree_merge_helper friend
3034         declaration.
3035         * include/bits/stl_multimap.h (std::multimap<>): Likewise.
3036         * include/bits/stl_multiset.h (std::multiset<>): Likewise.
3037         * include/bits/stl_set.h (std::set<>): Likewise.
3038         * include/bits/unordered_map.h (std::unordered_map<>): Fix
3039         _Hash_merge_helper friend declaration.
3040         (std::unordered_multimap<>): Likewise.
3041         * include/bits/unordered_set.h (std::unordered_set<>): Likewise.
3042         (std::unordered_multiset<>): Likewise.
3044 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
3046         * doc/xml/api.xml: www.fsf.org has moved to https. Also omit
3047         trailing slash for domain level link.
3048         * doc/xml/faq.xml: Ditto.
3049         * doc/xml/manual/appendix_free.xml (software): Ditto.
3050         * doc/xml/manual/intro.xml: Ditto.
3051         * doc/xml/manual/spine.xml: Ditto.
3052         * doc/xml/spine.xml: Ditto.
3054 2018-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
3056         * doc/xml/manual/documentation_hacking.xml: Adjust link to
3057         docbook.org.
3059 2018-03-17  Jonathan Wakely  <jwakely@redhat.com>
3061         * testsuite/20_util/function_objects/comparisons_pointer.cc: Adjust
3062         to compile as C++98.
3064 2018-03-14  Jonathan Wakely  <jwakely@redhat.com>
3066         PR libstdc++/78420
3067         * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
3068         (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
3069         to ensure total order for pointers.
3070         (greater<void>, less<void>, greater_equal<void>, less_equal<void>):
3071         Add operator() overloads for pointer arguments and make generic
3072         overloads dispatch to new _S_cmp functions when comparisons would
3073         use built-in operators for pointers.
3074         * testsuite/20_util/function_objects/comparisons_pointer.cc: New.
3076 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
3078         PR libstdc++/84773
3079         PR libstdc++/83662
3080         * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
3081         * configure: Regenerate.
3082         * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
3083         (aligned_alloc): Add using-declaration.
3084         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
3086 2018-03-09  François Dumont  <fdumont@gcc.gnu.org>
3088         * python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
3089         Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
3090         registration.
3092 2018-03-09  Jonathan Wakely  <jwakely@redhat.com>
3094         PR libstdc++/84769
3095         * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
3096         Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
3098         src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
3099         src/filesystem/std-ops.cc (create_dir): Likewise.
3101 2018-03-08  François Dumont  <fdumont@gcc.gnu.org>
3103         * python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
3104         (StdListIteratorPrinter): Inherit from latter.
3105         (StdFwdListIteratorPrinter): New, inherit from latter.
3106         (StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
3107         when iterator has no associated container.
3108         (build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
3109         __gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
3110         registrations.
3111         * testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
3112         * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
3114 2018-03-06  Ville Voutilainen  <ville.voutilainen@gmail.com>
3116         PR libstdc++/84601
3117         * include/std/optional (_Optional_payload): Split into multiple
3118         specializations that can handle different cases of trivial or
3119         non-trivial assignment operators.
3120         * testsuite/20_util/optional/84601.cc: New.
3121         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
3123 2018-03-02  Jonathan Wakely  <jwakely@redhat.com>
3125         PR libstdc++/84671
3126         * include/bits/parse_numbers.h (_Number_help): Add partial
3127         specialization to handle digit separators. Adjust partial
3128         specialization for recursion temrination to require _Pow == 1ULL.
3129         * testsuite/20_util/duration/literals/84671.cc: New
3131 2018-02-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
3133         Implement the missing bits of LWG 2769
3134         * include/std/any (any_cast(const any&)): Add static_assert.
3135         (any_cast(any&)): Likewise.
3136         (any_cast(any&&)): Likewise, and remove the handling
3137         for copyable-but-not-movable type.
3138         * testsuite/20_util/any/misc/any_cast.cc: Adjust.
3139         * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
3140         add new tests.
3142 2018-02-23  Jonathan Wakely  <jwakely@redhat.com>
3144         PR libstdc++/84532
3145         * include/std/thread (thread::__make_invoker): Construct tuple
3146         directly instead of using make_tuple.
3147         * testsuite/30_threads/async/84532.cc: New.
3148         * testsuite/30_threads/thread/84532.cc: New.
3150 2018-02-20  François Dumont  <fdumont@gcc.gnu.org>
3152         * include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
3153         (template<> __aligned_buffer): Define as __aligned_membuf alias.
3155 2018-02-19  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
3157         PR target/84148
3158         * configure: Regenerate.
3160 2018-02-15  Jonathan Wakely  <jwakely@redhat.com>
3162         PR libstdc++/81797
3163         * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
3164         * configure: Regenerate.
3165         * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
3166         defined.
3167         * include/Makefile.in: Regenerate.
3169 2018-01-29  Jonathan Wakely  <jwakely@redhat.com>
3171         PR libstdc++/83833
3172         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
3173         Add -ffloat-store to options for m68k and ia32.
3175         * doc/xml/faq.xml: Update copyright years.
3176         * doc/html/*: Regenerate.
3178         PR libstdc++/83658
3179         * include/std/any (any::__do_emplace): Only set _M_manager after
3180         constructing the contained object.
3181         * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
3182         * testsuite/20_util/any/modifiers/83658.cc: New test.
3184 2018-01-25  Jonathan Wakely  <jwakely@redhat.com>
3186         PR libstdc++/81076
3187         * include/c_global/cstddef (__byte_operand): Define primary template.
3188         * testsuite/18_support/byte/81076.cc: New test.
3190 2018-01-19  Christophe Lyon  <christophe.lyon@linaro.org>
3192         * testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
3193         dg-options and dg-add-options order.
3194         * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
3195         * testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
3196         Likewise.
3197         * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
3198         * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
3199         Likewise.
3200         * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
3201         Likewise.
3202         * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
3203         * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
3204         Likewise.
3205         * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
3206         Likewise.
3207         * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
3208         Likewise.
3209         * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
3210         Likewise.
3211         * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
3212         Likewise.
3213         * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
3214         Likewise.
3215         * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
3216         Likewise.
3217         * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
3218         Likewise.
3219         * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
3220         * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
3221         * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
3222         * testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
3223         * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
3224         * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
3225         * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
3226         * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
3227         * testsuite/special_functions/18_riemann_zeta/check_nan.cc:
3228         Likewise.
3229         * testsuite/special_functions/19_sph_bessel/check_nan.cc:
3230         Likewise.
3231         * testsuite/special_functions/20_sph_legendre/check_nan.cc:
3232         Likewise.
3233         * testsuite/special_functions/21_sph_neumann/check_nan.cc:
3234         Likewise.
3236 2018-01-18  Uros Bizjak  <ubizjak@gmail.com>
3238         * configure.ac (AC_CHECK_HEADERS): Add linux/types.h.  Conditionally
3239         include linux/types.h when checking linux/random.h header.
3240         * config.h.in: Regenerate.
3241         * configure: Ditto.
3242         * src/c++11/random.cc: Conditionally include linux/types.h.
3244 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
3246         * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
3248 2018-01-16  Jonathan Wakely  <jwakely@redhat.com>
3250         PR libstdc++/83834
3251         * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
3252         pattern with exact match for std::cerr.
3254 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
3256         PR libstdc++/83833
3257         * include/bits/random.h (chi_squared_distribution::param): Update
3258         gamma distribution parameter.
3259         * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
3260         test.
3262         PR libstdc++/83830
3263         * include/std/type_traits (has_unique_object_representations_v): Add
3264         variable template.
3265         * testsuite/20_util/has_unique_object_representations/value.cc: Check
3266         variable template.
3268 2018-01-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
3270         Make optional conditionally
3271         trivially_{copy,move}_{constructible,assignable}
3272         * include/std/optional (_Optional_payload): Fix the comment in
3273         the class head and turn into a primary and one specialization.
3274         (_Optional_payload::_M_engaged): Strike the NSDMI.
3275         (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
3276         New.
3277         (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
3278         Likewise.
3279         (_Optional_payload<_Tp, false>::_M_get): Likewise.
3280         (_Optional_payload<_Tp, false>::_M_reset): Likewise.
3281         (_Optional_base_impl): Likewise.
3282         (_Optional_base): Turn into a primary and three specializations.
3283         (optional(nullopt)): Change the base init.
3284         * testsuite/20_util/optional/assignment/8.cc: New.
3285         * testsuite/20_util/optional/cons/trivial.cc: Likewise.
3286         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
3288 2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
3290         PR libstdc++/80276
3291         * python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
3292         (get_template_arg_list): New.
3293         (StdVariantPrinter._template_args): Remove, use get_template_arg_list
3294         instead.
3295         (TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
3296         of strings and regular expressions.
3297         (add_one_template_type_printer): Adapt to new TemplateTypePrinter.
3298         (FilteringTypePrinter): Add docstring. Match using startswith. Use
3299         strip_inline_namespaces instead of strip_versioned_namespace.
3300         (add_one_type_printer): Prepend namespace to match argument.
3301         (register_type_printers): Add type printers for char16_t and char32_t
3302         string types and for types using cxx11 ABI. Update calls to
3303         add_one_template_type_printer to provide default argument dicts.
3304         * testsuite/libstdc++-prettyprinters/80276.cc: New test.
3305         * testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
3306         basic_string<unsigned char> and basic_string<signed char>.
3307         * testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
3308         to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
3310 2018-01-14  Andreas Schwab  <schwab@linux-m68k.org>
3312         PR libstdc++/81092
3313         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
3315 2018-01-13  Tim Shen  <timshen@google.com>
3317         PR libstdc++/83601
3318         * include/bits/regex.tcc (regex_replace): Fix escaping in sed.
3319         * testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
3320         * testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
3322 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3324         PR libstdc++/64054
3325         * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
3326         Remove dg-xfail-run-if.
3328 2018-01-10  François Dumont  <fdumont@gcc.gnu.org>
3330         * include/bits/forward_list.h
3331         (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
3332         (_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
3333         (_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
3334         (_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
3335         (_Fwd_list_impl()): Add noexcept qualification.
3336         (_Fwd_list_impl(const _Node_alloc_type&)): Delete.
3337         (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
3338         (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
3339         (_Fwd_list_base()): Default.
3340         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
3341         (_Fwd_list_base(_Fwd_list_base&&)): Default.
3342         (forward_list<>()): Default.
3343         (forward_list<>(forward_list&&)): Default.
3344         (forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
3345         (forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
3346         (forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
3347         * include/bits/forward_list.tcc
3348         (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
3349         _M_impl._M_head move assignment.
3350         (forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
3351         * testsuite/23_containers/forward_list/allocator/default_init.cc: New.
3353 2018-01-09  Jonathan Wakely  <jwakely@redhat.com>
3355         PR libstdc++/80276
3356         * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
3357         (UniquePointerPrinter): Print correct template argument, not type of
3358         the pointer.
3359         (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
3360         a type.
3361         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
3362         array type.
3363         * testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
3364         weak_ptr of array types.
3366 2018-01-09  François Dumont  <fdumont@gcc.gnu.org>
3368         PR libstdc++/83709
3369         * include/bits/hashtable_policy.h
3370         (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
3371         __first != __last.
3372         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
3373         (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
3374         Add false_type parameter.
3375         (_Insert_base::insert): Adapt.
3376         * include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
3377         Adapt.
3378         (_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
3379          Add __n_elt parameter, defaulted to 1.
3380         (_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
3381         policy _M_need_rehash.
3382         (_Hashtable::_M_merge_unique): Pass target number of elements to add to
3383         produce only 1 rehash if necessary.
3384         * testsuite/23_containers/unordered_map/insert/83709.cc: New.
3385         * testsuite/23_containers/unordered_set/insert/83709.cc: New.
3387 2018-01-09  Juraj Oršulić  <juraj.orsulic@fer.hr>
3388             Jonathan Wakely  <jwakely@redhat.com>
3390         PR libstdc++/59253 (partial)
3391         * python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
3392         type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
3393         (SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
3394         children.
3395         * testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
3396         of unique_ptr printer.
3397         * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
3398         output of shared_ptr printer.
3400 2018-01-05  Jonathan Wakely  <jwakely@redhat.com>
3402         PR libstdc++/83626
3403         * src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
3404         unnecessary symlink_status call.
3405         (remove_all(const path&, error_code&)): Use filesystem::remove.
3406         * src/filesystem/std-ops.cc: Likewise.
3408         PR libstdc++/83279
3409         * src/filesystem/std-ops.cc  (do_copy_file): Use non-null offset with
3410         sendfile.
3412         PR libstdc++/83626
3413         * src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
3414         report an error for ENOENT.
3415         (remove_all(const path&)): Fix type of result variable.
3416         (remove_all(const path&, error_code&)): Use non-throwing increment
3417         for directory iterator. Call POSIX remove directly to avoid redundant
3418         calls to symlink_status. Do not report errors for ENOENT.
3419         * src/filesystem/std-ops.cc: Likewise.
3420         * testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
3421         overload.
3422         * testsuite/experimental/filesystem/operations/remove_all.cc:
3423         Likewise.
3425 2018-01-04  Jonathan Wakely  <jwakely@redhat.com>
3427         PR libstdc++/83626
3428         * src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
3429         redundant call to ec.clear().
3430         (remove_all(const path&, error_code&))): Do not return an error for
3431         non-existent paths.
3432         * src/filesystem/std-ops.cc: Likewise.
3433         * testsuite/27_io/filesystem/operations/remove.cc: New test.
3434         * testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
3435         results for non-existent paths.
3436         * testsuite/experimental/filesystem/operations/remove.cc: New test.
3437         * testsuite/experimental/filesystem/operations/remove_all.cc: Fix
3438         expected results for non-existent paths.
3440         * include/bits/fs_ops.h (exists(const path&, error_code&))): Only
3441         check status_known once.
3442         * include/experimental/bits/fs_ops.h: Likewise.
3444         PR libstdc++/83607
3445         * include/std/functional (__is_byte_like): New trait.
3446         (__is_std_equal_to): Remove.
3447         (__boyer_moore_base_t): Use __is_byte_like instead of
3448         __is_std_equal_to.
3449         * include/experimental/functional (__is_std_equal_to): Remove.
3450         (__boyer_moore_base_t): Use __is_byte_like instead of
3451         __is_std_equal_to.
3452         * testsuite/20_util/function_objects/83607.cc: New test.
3454 2018-01-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
3456         Protect optional's deduction guide with the feature macro
3457         * include/std/optional: Use the feature macro.
3459 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
3461         Update copyright years.
3463 Copyright (C) 2018 Free Software Foundation, Inc.
3465 Copying and distribution of this file, with or without modification,
3466 are permitted in any medium without royalty provided the copyright
3467 notice and this notice are preserved.