1 2018-11-29 Edward Smith-Rowland <3dw4rd@verizon.net>
3 Only include bits/stl_algo.h for C++20.
4 * include/std/deque: Only include bits/stl_algo.h for C++20.
5 * include/std/string: Ditto.
6 * include/std/vector: Ditto.
8 2018-11-29 Edward Smith-Rowland <3dw4rd@verizon.net>
11 * include/experimental/deque: Make inline.
12 * include/std/deque: Include bits/stl_algo.h.
13 (erase, erase_if): Make inline.
14 * include/std/string: Include bits/stl_algo.h.
15 * include/std/unordered_set: Add erase, erase_if!
16 * include/std/vector: Include bits/stl_algo.h.
17 * testsuite/21_strings/basic_string/erasure.cc:
18 Add { dg-options "-std=gnu++2a" }.
19 * testsuite/23_containers/deque/erasure.cc: Ditto.
20 * testsuite/23_containers/forward_list/erasure.cc: Ditto.
21 * testsuite/23_containers/list/erasure.cc: Ditto.
22 * testsuite/23_containers/map/erasure.cc: Ditto.
23 * testsuite/23_containers/set/erasure.cc: Ditto.
24 * testsuite/23_containers/unordered_map/erasure.cc: Ditto.
25 * testsuite/23_containers/unordered_set/erasure.cc: Ditto.
26 * testsuite/23_containers/vector/erasure.cc: Ditto.
28 2018-11-29 Jonathan Wakely <jwakely@redhat.com>
31 * include/ext/aligned_buffer.h (__aligned_membuf): Add comment.
32 (__aligned_buffer): Use __alignof__ instead of std::alignment_of.
33 * include/std/type_traits (alignment_of): Use alignof instead of
35 * testsuite/20_util/alignment_of/value.cc: Fix test to check values
36 match alignof not __alignof__, as required by the standard.
40 * src/filesystem/ops.cc (experimental::create_directories): Report
41 an error when the path resolves to an existing non-directory (P1164).
42 * src/filesystem/std-ops.cc (create_directories): Likewise. Handle
43 empty filenames due to trailing slashes.
44 * testsuite/27_io/filesystem/operations/create_directories.cc: Test
45 when some component of the path exists and is not a directory. Test
47 * testsuite/experimental/filesystem/operations/create_directories.cc:
50 2018-11-28 Jonathan Wakely <jwakely@redhat.com>
53 * src/filesystem/path.cc (filesystem_error::_M_gen_what()): Create
54 string directly, instead of calling fs_err_concat.
57 * include/std/string_view (basic_string_view::substr): Add default
58 argument to first parameter.
59 * include/experimental/string_view (basic_string_view::substr):
61 * testsuite/21_strings/basic_string_view/operations/substr/char/
63 * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/
65 * testsuite/experimental/string_view/operations/substr/char/83511.cc:
67 * testsuite/experimental/string_view/operations/substr/wchar_t/83511.cc:
70 2018-11-28 Edward Smith-Rowland <3dw4rd@verizon.net>
72 Implement uniform container erasure for C++20.
73 * include/Makefile.am: Move erase_if.h.
74 * include/Makefile.in: Move erase_if.h.
75 * include/experimental/bits/erase_if.h: Move ...
76 * include/bits/erase_if.h: ... here.
77 * include/experimental/map: Move erase_if.h.
78 * include/experimental/set: Move erase_if.h.
79 * include/experimental/unordered_map: Move erase_if.h.
80 * include/experimental/unordered_set: Move erase_if.h.
81 * include/std/deque (erase_if, erase): New functions.
82 * include/std/forward_list: Ditto.
83 * include/std/list: Ditto.
84 * include/std/map: Ditto.
85 * include/std/set: Ditto.
86 * include/std/string: Ditto.
87 * include/std/unordered_map: Ditto.
88 * include/std/unordered_set: Ditto.
89 * include/std/vector: Ditto.
90 * testsuite/21_strings/basic_string/erasure.cc: New test.
91 * testsuite/23_containers/deque/erasure.cc: New test.
92 * testsuite/23_containers/forward_list/erasure.cc: New test.
93 * testsuite/23_containers/list/erasure.cc: New test.
94 * testsuite/23_containers/map/erasure.cc: New test.
95 * testsuite/23_containers/set/erasure.cc: New test.
96 * testsuite/23_containers/unordered_map/erasure.cc: New test.
97 * testsuite/23_containers/unordered_set/erasure.cc: New test.
98 * testsuite/23_containers/vector/erasure.cc: New test.
100 2018-11-28 Jonathan Wakely <jwakely@redhat.com>
102 * doc/xml/manual/intro.xml: Document LWG 3096 change.
103 * src/filesystem/std-path.cc (path::lexically_relative(const path&)):
104 Treat a final empty element equivalently to a final dot element.
105 * testsuite/27_io/filesystem/path/generation/relative.cc: Add checks
106 for the examples in the DR.
109 * include/bits/fs_path.h (filesystem_error): Move data members into
110 pimpl class owned by shared_ptr. Remove inline definitions of member
112 * src/filesystem/std-path.cc (filesystem_error::_Impl): Define.
113 (filesystem_error): Define member functions.
114 * testsuite/27_io/filesystem/filesystem_error/cons.cc: New test.
115 * testsuite/27_io/filesystem/filesystem_error/copy.cc: New test.
117 * doc/xml/manual/status_cxx2017.xml: Update C++17 status.
118 * doc/html/*: Regenerate.
120 2018-11-27 Jonathan Wakely <jwakely@redhat.com>
122 * testsuite/27_io/filesystem/operations/canonical.cc: Remove
123 directory created by test.
124 * testsuite/27_io/filesystem/operations/symlink_status.cc: Remove
125 symlink created by test.
128 * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY): Add new macro
129 that defines _GLIBCXX_HAVE_ATOMIC_LOCK_POLICY.
130 * config.h.in: Regenerate.
131 * configure: Regenerate.
132 * configure.ac: Use GLIBCXX_ENABLE_LOCK_POLICY.
133 * doc/xml/manual/configure.xml: Document new configure option.
134 * include/bits/fs_dir.h (directory_iterator): Use __shared_ptr
135 instead of shared_ptr.
136 (recursive_directory_iterator): Likewise.
137 (__shared_ptr<_Dir>): Add explicit instantiation declaration.
138 (__shared_ptr<recursive_directory_iterator::_Dir_stack>): Likewise.
139 * include/bits/shared_ptr_base.h (__allocate_shared, __make_shared):
140 Add default template argument for _Lock_policy template parameter.
141 * include/ext/concurrence.h (__default_lock_policy): Check macro
142 _GLIBCXX_HAVE_ATOMIC_LOCK_POLICY instead of checking if the current
143 target supports the builtins for compare-and-swap.
144 * src/filesystem/std-dir.cc (__shared_ptr<_Dir>): Add explicit
145 instantiation definition.
146 (__shared_ptr<recursive_directory_iterator::_Dir_stack>): Likewise.
147 (directory_iterator, recursive_directory_iterator): Use __make_shared
148 instead of make_shared.
150 2018-11-27 François Dumont <fdumont@gcc.gnu.org>
153 * include/bits/hashtable.h (_Hashtable<>::_M_assign_elements): New.
154 (_Hashtable<>::operator=(const _Hashtable&)): Use latter.
155 (_Hashtable<>::_M_move_assign(_Hashtable&&, false_type)): Likewise.
156 * testsuite/23_containers/unordered_set/allocator/move_assign.cc
159 2018-11-26 Jonathan Wakely <jwakely@redhat.com>
161 * testsuite/26_numerics/complex/requirements/more_constexpr.cc: Fix
162 failure on targets without __float128.
164 2018-11-23 Edward Smith-Rowland <3dw4rd@verizon.net>
166 Implement P0415 More constexpr for std::complex.
167 * include/std/complex (conj(complex<Tp>), norm(complex<Tp>)): Constexpr;
168 (real(Tp), imag(Tp)): Constexpr;
169 (operator@=(Tp), operator@=(complex<Tp>)): Constexpr;
170 (operator@(Tp,complex<Tp>), operator@(complex<Tp>,Tp)
171 operator@(complex<Tp>,complex<Tp>)): Constexpr.
172 * testsuite/26_numerics/complex/comparison_operators/
173 more_constexpr.cc: New test.
174 * testsuite/26_numerics/complex/operators/more_constexpr.cc: New test.
175 * testsuite/26_numerics/complex/requirements/
176 more_constexpr.cc: New test.
177 * testsuite/26_numerics/complex/value_operations/
178 more_constexpr.cc: New test.
179 * testsuite/26_numerics/headers/complex/synopsis.cc:
180 Add _GLIBCXX20_CONSTEXPR to applicable operators; Add missing proj().
181 * testsuite/26_numerics/headers/complex/synopsis.cc:
182 Add _GLIBCXX20_CONSTEXPR to relevant decls.
184 2018-11-23 Martin Sebor <msebor@redhat.com>
185 Jonathan Wakely <jwakely@redhat.com>
188 * python/libstdcxx/v6/printers.py (StdBitsetPrinter): Handle
189 exception thrown for std::bitset<0>.
190 * testsuite/libstdc++-prettyprinters/simple.cc: Test std::bitset<0>.
192 2018-11-23 Jonathan Wakely <jwakely@redhat.com>
194 PR libstdc++/87308 (partial)
195 * python/libstdcxx/v6/printers.py (StdExpAnyPrinter): Adjust regex to
196 work around PR 88166.
197 * testsuite/libstdc++-prettyprinters/cxx17.cc: Test std::any
198 containing a local type.
200 2018-11-22 Marc Glisse <marc.glisse@inria.fr>
203 * include/bits/stl_algobase.h: Include <type_traits>.
204 (__niter_base): Add noexcept specification.
205 * include/bits/stl_deque.h: Include <bits/stl_uninitialized.h>.
206 (__is_trivially_relocatable): Specialize for deque.
207 * include/bits/stl_iterator.h: Include <type_traits>.
208 (__niter_base): Add noexcept specification.
209 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
210 Add parameter for meta-programming.
211 (__relocate_a_1, __relocate_a): Add noexcept specification.
212 * include/bits/stl_vector.h (__use_relocate): Test __relocate_a.
214 2018-11-22 Jonathan Wakely <jwakely@redhat.com>
218 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti)
219 [__cpp_rtti]: Define even when RTTI is enabled. Use array of
220 sizeof(type_info) so that type-punned reference binds to an object
221 of the correct size as well as correct alignment.
222 (_Sp_counted_ptr_inplace::_M_get_deleter) [__cpp_rtti]: Check for
223 _S_ti() reference even when RTTI is enabled.
224 (__shared_ptr(_Sp_make_shared_tag, const _Alloc&, _Args&&...))
225 [__cpp_rtti]: Pass _S_ti() instead of typeid(_Sp_make_shared_tag).
227 2018-11-21 Jakub Jelinek <jakub@redhat.com>
230 * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust expected
232 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
233 * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
234 * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
235 * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
236 * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
237 * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
239 2018-11-21 Jonathan Wakely <jwakely@redhat.com>
242 * include/std/memory_resource (pool_options): Add Doxygen comments.
243 * src/c++17/memory_resource.cc (pool_sizes): Only use suitable values
244 on targets with 16-bit or 20-bit size_t type.
245 (munge_options): Make default values depend on width of size_t type.
248 * src/c++17/memory_resource.cc (bitset::size_type): Use the smaller
249 of uint32_t and size_t.
250 (bitset::size(), bitset::free(), bitset::update_next_word())
251 (bitset::max_blocks_per_chunk(), bitset::max_word_index()): Use
252 size_type consistently instead of size_t.
253 (chunk): Adjust static_assert checking sizeof(chunk).
255 2018-11-20 Ville Voutilainen <ville.voutilainen@gmail.com>
257 Housekeeping for the effective targets of optional's tests.
258 * testsuite/20_util/optional/77288.cc: Adjust.
259 * testsuite/20_util/optional/84601.cc: Likewise.
260 * testsuite/20_util/optional/assignment/1.cc: Likewise.
261 * testsuite/20_util/optional/assignment/2.cc: Likewise.
262 * testsuite/20_util/optional/assignment/3.cc: Likewise.
263 * testsuite/20_util/optional/assignment/4.cc: Likewise.
264 * testsuite/20_util/optional/assignment/5.cc: Likewise.
265 * testsuite/20_util/optional/assignment/6.cc: Likewise.
266 * testsuite/20_util/optional/assignment/7.cc: Likewise.
267 * testsuite/20_util/optional/assignment/8.cc: Likewise.
268 * testsuite/20_util/optional/cons/77727.cc: Likewise.
269 * testsuite/20_util/optional/cons/copy.cc: Likewise.
270 * testsuite/20_util/optional/cons/deduction.cc: Likewise.
271 * testsuite/20_util/optional/cons/default.cc: Likewise.
272 * testsuite/20_util/optional/cons/move.cc: Likewise.
273 * testsuite/20_util/optional/cons/trivial.cc: Likewise.
274 * testsuite/20_util/optional/cons/value.cc: Likewise.
275 * testsuite/20_util/optional/cons/value_neg.cc: Likewise.
276 * testsuite/20_util/optional/constexpr/cons/default.cc: Likewise.
277 * testsuite/20_util/optional/constexpr/cons/value.cc: Likewise.
278 * testsuite/20_util/optional/constexpr/in_place.cc: Likewise.
279 * testsuite/20_util/optional/constexpr/nullopt.cc: Likewise.
280 * testsuite/20_util/optional/constexpr/observers/1.cc: Likewise.
281 * testsuite/20_util/optional/constexpr/observers/4.cc: Likewise.
282 * testsuite/20_util/optional/constexpr/observers/5.cc: Likewise.
283 * testsuite/20_util/optional/constexpr/relops/1.cc: Likewise.
284 * testsuite/20_util/optional/constexpr/relops/2.cc: Likewise.
285 * testsuite/20_util/optional/constexpr/relops/3.cc: Likewise.
286 * testsuite/20_util/optional/constexpr/relops/4.cc: Likewise.
287 * testsuite/20_util/optional/constexpr/relops/5.cc: Likewise.
288 * testsuite/20_util/optional/constexpr/relops/6.cc: Likewise.
289 * testsuite/20_util/optional/in_place.cc: Likewise.
290 * testsuite/20_util/optional/make_optional.cc: Likewise.
291 * testsuite/20_util/optional/nullopt.cc: Likewise.
292 * testsuite/20_util/optional/observers/1.cc: Likewise.
293 * testsuite/20_util/optional/observers/2.cc: Likewise.
294 * testsuite/20_util/optional/observers/3.cc: Likewise.
295 * testsuite/20_util/optional/observers/4.cc: Likewise.
296 * testsuite/20_util/optional/observers/5.cc: Likewise.
297 * testsuite/20_util/optional/observers/6.cc: Likewise.
298 * testsuite/20_util/optional/relops/1.cc: Likewise.
299 * testsuite/20_util/optional/relops/2.cc: Likewise.
300 * testsuite/20_util/optional/relops/3.cc: Likewise.
301 * testsuite/20_util/optional/relops/4.cc: Likewise.
302 * testsuite/20_util/optional/relops/5.cc: Likewise.
303 * testsuite/20_util/optional/relops/6.cc: Likewise.
304 * testsuite/20_util/optional/relops/7.cc: Likewise.
305 * testsuite/20_util/optional/requirements.cc: Likewise.
306 * testsuite/20_util/optional/swap/1.cc: Likewise.
307 * testsuite/20_util/optional/swap/2.cc: Likewise.
308 * testsuite/20_util/optional/typedefs.cc: Likewise.
310 2018-11-19 François Dumont <fdumont@gcc.gnu.org>
312 * include/ext/throw_allocator.h
313 (annotate_base::insert(void*, size_t)): Use insert result to check for
314 double insert attempt.
315 (annotate_base::insert_construct(void*)): Likewise.
316 (annotate_base::check_allocated(void*, size_t)): Return found iterator.
317 (annotate_base::erase(void*, size_t)): Use latter method returned
319 (annotate_base::check_constructed(void*, size_t)): Return found iterator.
320 (annotate_base::erase_construct(void*)): Use latter method returned
323 2018-11-19 Ville Voutilainen <ville.voutilainen@gmail.com>
326 Also implement P0602R4 (variant and optional
327 should propagate copy/move triviality) for std::optional.
328 * include/std/optional (_Optional_payload): Change
329 the main constraints to check constructibility in
330 addition to assignability.
331 (operator=): Make constexpr.
332 (_M_reset): Likewise.
333 (_M_construct): Likewise.
334 (operator->): Likewise.
335 * testsuite/20_util/optional/assignment/8.cc: Adjust.
336 * testsuite/20_util/optional/assignment/9.cc: New.
338 2018-11-19 Jonathan Wakely <jwakely@redhat.com>
340 PR libstdc++/88084 - Implement LWG 2777
341 * include/std/string_view (basic_string_view::copy): Use traits to
343 * testsuite/21_strings/basic_string_view/operations/copy/char/2.cc:
345 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc:
348 2018-11-18 Michele Pezzutti <mpezz@tiscali.it>
349 Edward Smith-Rowland <3dw4rd@verizon.net>
351 PR libstdc++/83566 - cyl_bessel_j returns wrong result for x>1000
353 * include/tr1/bessel_function.tcc: Perform no fewer than nu/2 iterations
354 of the asymptotic series (nu is the Bessel order).
355 * testsuite/tr1/5_numerical_facilities/special_functions/
356 09_cyl_bessel_j/check_value.cc: Add tests at nu=100, 1000<=x<=2000.
357 * testsuite/tr1/5_numerical_facilities/special_functions/
358 11_cyl_neumann/check_value.cc: Ditto.
359 * testsuite/special_functions/08_cyl_bessel_j/check_value.cc: Ditto.
360 * testsuite/special_functions/10_cyl_neumann/check_value.cc: Ditto.
362 2018-11-17 Jonathan Wakely <jwakely@redhat.com>
364 Implement std::pmr::synchronized_pool_resource
365 * config/abi/pre/gnu.ver: Add new symbols.
366 * include/std/memory_resource [_GLIBCXX_HAS_GTHREADS]
367 (__cpp_lib_memory_resource): Define to expected value, 201603.
368 (synchronized_pool_resource): New class.
369 [!_GLIBCXX_HAS_GTHREADS] (__cpp_lib_memory_resource): Define to 1.
370 * include/std/shared_mutex (__glibcxx_rwlock_rdlock)
371 (__glibcxx_rwlock_tryrdlock, __glibcxx_rwlock_wrlock)
372 (__glibcxx_rwlock_trywrlock, __glibcxx_rwlock_unlock)
373 (__glibcxx_rwlock_destroy, __glibcxx_rwlock_init)
374 (__glibcxx_rwlock_timedrdlock, __glibcxx_rwlock_timedwrlock): Define
375 weak symbols for POSIX rwlock functions.
376 (__shared_mutex_pthread): Use weak symbols.
377 * include/std/version (__cpp_lib_memory_resource): Define.
378 * src/c++17/memory_resource.cc [_GLIBCXX_HAS_GTHREADS]
379 (synchronized_pool_resource::_TPools): New class.
380 (destroy_TPools): New function for pthread_key_create destructor.
381 (synchronized_pool_resource::synchronized_pool_resource)
382 (synchronized_pool_resource::~synchronized_pool_resource)
383 (synchronized_pool_resource::release)
384 (synchronized_pool_resource::do_allocate)
385 (synchronized_pool_resource::do_deallocate): Define public members.
386 (synchronized_pool_resource::_M_thread_specific_pools)
387 (synchronized_pool_resource::_M_alloc_tpools)
388 (synchronized_pool_resource::_M_alloc_shared_tpools): Define private
390 * testsuite/20_util/synchronized_pool_resource/allocate.cc: New test.
391 * testsuite/20_util/synchronized_pool_resource/cons.cc: New test.
392 * testsuite/20_util/synchronized_pool_resource/is_equal.cc: New test.
393 * testsuite/20_util/synchronized_pool_resource/multithreaded.cc: New
395 * testsuite/20_util/synchronized_pool_resource/release.cc: New test.
396 * testsuite/performance/20_util/memory_resource/pools.cc: Add
397 multithreaded tests using pmr::synchronized_pool_resource.
399 2018-11-16 Renlin Li <renlin.li@arm.com>
400 Tejas Belagod <tejas.belagod@arm.com>
402 testsuite/lib/libstdc++.exp (check_v3_target_prop_cached): New proc.
403 (check_v3_target): Use the check_v3_target_prop_cached.
405 2018-11-15 Jonathan Wakely <jwakely@redhat.com>
407 * scripts/check_performance: Allow tests to choose a -std flag.
408 * src/c++17/memory_resource.cc (bitset::get_first_unset()): Use local
409 variables of the right types. Call update_next_word() unconditionally.
410 * testsuite/20_util/unsynchronized_pool_resource/cons.cc: New test.
411 * testsuite/performance/20_util/memory_resource/pools.cc: New test.
412 * testsuite/util/testsuite_performance.h (time_counter): Allow
413 timer to be restarted.
415 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Fix
416 test for 32-bit targets. Test additional allocation sizes.
418 2018-11-14 Jonathan Wakely <jwakely@redhat.com>
420 * scripts/create_testsuite_files: Add special_functions to the list
421 of directories to search. Add comment referring to conformance.exp.
422 * testsuite/libstdc++-dg/conformance.exp: Add comment referring
423 to create_testsuite_files.
425 2018-11-13 Jonathan Wakely <jwakely@redhat.com>
427 * src/c++17/memory_resource.cc (select_num_pools): Fix off-by-one
428 error when block_size is equal to one of the values in the array.
430 * src/c++17/memory_resource.cc (_Pool::deallocate): Restore
431 attributes to parameters that are only used in assertions.
433 * src/c++17/memory_resource.cc (bitset::find_first_unset()): Remove
435 (bitset::get_first_unset()): Remove loop, if there's are unset bits
436 then _M_next_word refers to the first one and there's no need to loop.
437 (_Pool::_Pool(size_t, size_t), _Pool::block_size()): Remove dead code.
439 * src/c++17/memory_resource.cc (munge_options): Round up value of
440 largest_required_pool_block to multiple of smallest pool size. Round
441 excessively large values down to largest pool size.
442 (select_num_pools): Increase number of pools by one unless it exactly
443 matches requested largest_required_pool_block.
444 (__pool_resource::_M_alloc_pools()): Make largest pool size equal
445 largest_required_pool_block.
446 * testsuite/20_util/unsynchronized_pool_resource/options.cc: Check
447 that pool_options::largest_required_pool_block is set appropriately.
449 * src/c++17/memory_resource.cc (big_block): Improve comments.
450 (big_block::all_ones): Remove.
451 (big_block::big_block(size_t, size_t)): Use alloc_size.
452 (big_block::size()): Add comment, replace all_ones with equivalent
454 (big_block::align()): Shift value of correct type.
455 (big_block::alloc_size(size_t)): New function to round up size.
456 (__pool_resource::allocate(size_t, size_t)): Add comment.
457 (__pool_resource::deallocate(void*, size_t, size_t)): Likewise. Fix
458 incorrect assertion by using big_block::alloc_size(size_t).
459 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Add
460 more tests for unpooled allocations.
462 * src/c++17/memory_resource.cc (bitset::full()): Handle edge case
463 for _M_next_word maximum value.
464 (bitset::get_first_unset(), bitset::set(size_type)): Use
465 update_next_word() to update _M_next_word.
466 (bitset::update_next_word()): New function, avoiding wraparound of
467 unsigned _M_next_word member.
468 (bitset::max_word_index()): New function.
469 (chunk::chunk(void*, uint32_t, void*, size_t)): Add assertion.
470 (chunk::max_bytes_per_chunk()): New function.
471 (pool::replenish(memory_resource*, const pool_options&)): Prevent
472 _M_blocks_per_chunk from exceeding max_blocks_per_chunk or from
473 causing chunk::max_bytes_per_chunk() to be exceeded.
474 * testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc:
477 2018-11-12 Jason Merrill <jason@redhat.com>
479 * libsupc++/new (std::destroying_delete_t): New.
481 2018-11-12 Jonathan Wakely <jwakely@redhat.com>
484 * src/c++17/memory_resource.cc (chunk::_M_bytes): Change type from
485 unsigned to uint32_t.
486 (chunk): Fix static assertion for 64-bit targets that aren't LP64.
487 (bigblock::all_ones): Fix undefined shift.
489 2018-11-11 Hans-Peter Nilsson <hp@axis.com>
491 PR libstdc++-v3/54005
492 * include/bits/atomic_base.h (__atomic_base<_TTp>::is_lock_free(),
493 __atomic_base<_PTp*>::is_lock_free()): Call __atomic_is_lock_free
494 with the type-derived _S_alignment instead of __alignof the object.
495 * include/std/atomic (atomic<T>::is_lock_free()): Likewise.
497 2018-11-11 Jonathan Wakely <jwakely@redhat.com>
499 Implement P0318R1 unwrap_ref_decay and unwrap_reference
500 * include/std/type_traits (unwrap_reference, unwrap_reference_t)
501 (unwrap_ref_decay, unwrap_ref_decay_t): New traits and aliases.
502 * testsuite/20_util/unwrap_reference/1.cc: New test.
503 * testsuite/20_util/unwrap_reference/2.cc: New test.
505 Implement P1007R3 std::assume_aligned
506 * include/std/memory (assume_aligned): Implement for C++17.
507 * testsuite/20_util/assume_aligned/1.cc: New test.
508 * testsuite/20_util/assume_aligned/2_neg.cc: New test.
509 * testsuite/20_util/assume_aligned/3.cc: New test.
511 2018-11-09 Jonathan Wakely <jwakely@redhat.com>
514 * include/bits/stl_uninitialized.h (__relocate_a_1): Do not call
515 memmove when there's nothing to copy (and pointers could be null).
517 2018-11-07 Hafiz Abid Qadeer <abidh@codesourcery.com>
519 * configure: Regenerated.
521 2018-11-07 Jonathan Wakely <jwakely@redhat.com>
523 * config/abi/pre/gnu.ver: Fix patterns for size_t parameters.
525 2018-11-06 Jonathan Wakely <jwakely@redhat.com>
527 Implement std::pmr::unsynchronized_pool_resource
528 * config/abi/pre/gnu.ver: Add new symbols.
529 * include/std/memory_resource (std::pmr::__pool_resource): New class.
530 (std::pmr::unsynchronized_pool_resource): New class.
531 * src/c++17/Makefile.am: Add -fimplicit-templates to flags for
533 * src/c++17/Makefile.in: Regenerate.
534 * src/c++17/memory_resource.cc (bitset, chunk, big_block): New
536 (__pool_resource::_Pool): Define new class.
537 (munge_options, pool_index, select_num_pools): New internal functions.
538 (__pool_resource::__pool_resource, __pool_resource::~__pool_resource)
539 (__pool_resource::allocate, __pool_resource::deallocate)
540 (__pool_resource::_M_alloc_pools): Define member functions.
541 (unsynchronized_pool_resource::unsynchronized_pool_resource)
542 (unsynchronized_pool_resource::~unsynchronized_pool_resource)
543 (unsynchronized_pool_resource::release)
544 (unsynchronized_pool_resource::_M_find_pool)
545 (unsynchronized_pool_resource::do_allocate)
546 (unsynchronized_pool_resource::do_deallocate): Define member
548 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: New
550 * testsuite/20_util/unsynchronized_pool_resource/is_equal.cc: New
552 * testsuite/20_util/unsynchronized_pool_resource/options.cc: New
554 * testsuite/20_util/unsynchronized_pool_resource/release.cc: New
557 2018-11-06 John Bytheway <jbytheway@gmail.com>
560 * include/debug/safe_sequence.tcc
561 (_Safe_sequence<>::_M_transfer_from_if): Skip transfer to self.
563 2018-10-31 Joseph Myers <joseph@codesourcery.com>
566 * Makefile.am: Include multilib.am.
567 * configure.ac: Remove AC_PREREQ.
568 * Makefile.in, aclocal.m4, configure, doc/Makefile.in,
569 include/Makefile.in, libsupc++/Makefile.in, po/Makefile.in,
570 python/Makefile.in, src/Makefile.in, src/c++11/Makefile.in,
571 src/c++17/Makefile.in, src/c++98/Makefile.in,
572 src/filesystem/Makefile.in, testsuite/Makefile.in: Regenerate.
574 2018-10-31 Jonathan Wakely <jwakely@redhat.com>
576 * testsuite/20_util/pair/87822.cc: Test deeper nesting.
579 * include/bits/stl_pair.h (__pair_base): Change to class template.
580 (pair): Make base class type depend on template parameters.
581 * testsuite/20_util/pair/87822.cc: New test.
583 2018-10-30 Marek Polacek <polacek@redhat.com>
585 Implement P0892R2, explicit(bool).
586 * testsuite/20_util/any/cons/explicit.cc: Adjust dg-error.
587 * testsuite/20_util/pair/cons/explicit_construct.cc: Likewise.
588 * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise.
590 2018-10-30 Jonathan Wakely <jwakely@redhat.com>
593 * include/bits/forward_list.h (_Fwd_list_impl::_Fwd_list_impl()): Use
594 trait in exception-specification instead of possibly invalid
596 * include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl()):
598 * include/bits/stl_list.h (_List_impl::_List_impl()): Likewise.
599 * include/bits/stl_vector.h (_Vector_impl::_Vector_impl()): Likewise.
600 * testsuite/23_containers/forward_list/cons/87809.cc: New test.
601 * testsuite/23_containers/list/cons/87809.cc: New test.
602 * testsuite/23_containers/vector/bool/cons/87809.cc: New test.
603 * testsuite/23_containers/vector/cons/87809.cc: New test.
606 * include/tr2/dynamic_bitset (dynamic_bitset::push_back): When there
607 are no unused bits in the last block, append a new block with the
608 right value so the bit doesn't need to be set. Only increment size
609 after setting the new bit, not before.
610 * testsuite/tr2/dynamic_bitset/pr87784.cc: New test.
612 2018-10-29 David Malcolm <dmalcolm@redhat.com>
614 * testsuite/17_intro/using_namespace_std_exp_neg.cc: Remove
615 "expected namespace-name before" error.
616 * testsuite/17_intro/using_namespace_std_tr1_neg.cc: Likewise.
618 2018-10-28 François Dumont <fdumont@gcc.gnu.org>
620 * testsuite/23_containers/deque/48101_neg.cc: Remove dg-prune-output
621 'std' from regex pattern for versioned namespace compatibility.
622 * testsuite/23_containers/vector/48101_neg.cc: Likewise.
623 * testsuite/27_io/filesystem/path/io/dr2989.cc: Likewise.
625 2018-10-25 Jonathan Wakely <jwakely@redhat.com>
628 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
629 (basic_string::operator=(basic_string&&)): For short strings copy the
630 buffer inline. Only fall back to using assign(const basic_string&) to
631 do a deep copy when reallocation is needed.
632 * testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc:
634 * testsuite/21_strings/basic_string/modifiers/assign/char/
635 move_assign_optim.cc: New test.
636 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc:
638 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
639 move_assign_optim.cc: New test.
641 2018-10-25 Marc Glisse <marc.glisse@inria.fr>
644 * include/bits/alloc_traits.h (_S_construct, _S_destroy, construct,
645 destroy): Add noexcept specification.
646 * include/bits/allocator.h (construct, destroy): Likewise.
647 * include/ext/alloc_traits.h (construct, destroy): Likewise.
648 * include/ext/malloc_allocator.h (construct, destroy): Likewise.
649 * include/ext/new_allocator.h (construct, destroy): Likewise.
650 * include/bits/stl_uninitialized.h (__relocate_object_a, __relocate_a,
651 __relocate_a_1): New functions.
652 (__is_trivially_relocatable): New class.
653 * include/bits/stl_vector.h (__use_relocate): New static member.
654 * include/bits/vector.tcc (reserve, _M_realloc_insert,
655 _M_default_append): Use __relocate_a.
656 (reserve, _M_assign_aux, _M_realloc_insert, _M_fill_insert,
657 _M_default_append, _M_range_insert): Move _GLIBCXX_ASAN_ANNOTATE_REINIT
659 * testsuite/23_containers/vector/modifiers/push_back/49836.cc:
660 Replace CopyConsOnlyType with DelAnyAssign.
662 2018-10-24 François Dumont <fdumont@gcc.gnu.org>
664 * include/debug/safe_unordered_container.h
665 (_Safe_unordered_container<>::_M_invalidate_locals): Take lambda
666 parameter type from local end variable.
667 (_Safe_unordered_container<>::_M_invalidate_all): Likewise.
668 * include/debug/unordered_map
669 (unordered_map<>::begin()): Use C++11 direct initialization.
670 (unordered_map<>::end()): Likewise.
671 (unordered_map<>::cbegin()): Likewise.
672 (unordered_map<>::cend()): Likewise.
673 (unordered_map<>::begin(size_type)): Likewise.
674 (unordered_map<>::end(size_type)): Likewise.
675 (unordered_map<>::cbegin(size_type)): Likewise.
676 (unordered_map<>::cend(size_type)): Likewise.
677 (unordered_map<>::emplace<>(_Args&&...)): Likewise.
678 (unordered_map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
679 (unordered_map<>::insert(const value_type&)): Likewise.
680 (unordered_map<>::insert(value_type&&)): Likewise.
681 (unordered_map<>::insert<>(_Pair&&)): Likewise.
682 (unordered_map<>::insert(const_iterator, const value_type&)): Likewise.
683 (unordered_map<>::insert(const_iterator, value_type&&)): Likewise.
684 (unordered_map<>::insert<>(const_iterator, _Pair&&)): Likewise.
685 (unordered_map<>::try_emplace<>(const key_type&, _Args&&...)): Likewise.
686 (unordered_map<>::try_emplace<>(key_type&&, _Args&&...)): Likewise.
687 (unordered_map<>::try_emplace<>(const_iterator, const key_type&,
688 _Args&&...)): Likewise.
689 (unordered_map<>::try_emplace<>(const_iterator, key_type&&,
690 _Args&&...)): Likewise.
691 (unordered_map<>::insert_or_assign<>(const key_type&, _Obj&&)): Likewise.
692 (unordered_map<>::insert_or_assign<>(key_type&&, _Obj&&)): Likewise.
693 (unordered_map<>::insert_or_assign<>(const_iterator, const key_type&,
695 (unordered_map<>::insert_or_assign<>(const_iterator, key_type&&,
697 (unordered_map<>::insert(note_type&&)): Likewise.
698 (unordered_map<>::find(const key_type&)): Likewise.
699 (unordered_map<>::equal_range(const key_type&)): Likewise.
700 (unordered_map<>::_M_extract): New.
701 (unordered_map<>::extract(const_iterator)): Use latter.
702 (unordered_map<>::extract(const key_type&)): Likewise.
703 (unordered_map<>::_M_erase): New.
704 (unordered_map<>::erase(const key_type&)): Use latter.
705 (unordered_map<>::erase(const_iterator)): Likewise.
706 (unordered_map<>::erase(iterator)): Likewise.
707 (unordered_map<>::_M_invalidate): New.
708 (unordered_map<>::erase(const_iterator, const_iterator)): Use latter.
709 (unordered_multimap<>::begin()): Use C++11 direct initialization.
710 (unordered_multimap<>::end()): Likewise.
711 (unordered_multimap<>::cbegin()): Likewise.
712 (unordered_multimap<>::cend()): Likewise.
713 (unordered_multimap<>::begin(size_type)): Likewise.
714 (unordered_multimap<>::end(size_type)): Likewise.
715 (unordered_multimap<>::cbegin(size_type)): Likewise.
716 (unordered_multimap<>::cend(size_type)): Likewise.
717 (unordered_multimap<>::emplace<>(_Args&&...)): Likewise.
718 (unordered_multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
719 (unordered_multimap<>::insert(const value_type&)): Likewise.
720 (unordered_multimap<>::insert(const_iterator, const value_type&)): Likewise.
721 (unordered_multimap<>::insert(const_iterator, value_type&&)): Likewise.
722 (unordered_multimap<>::insert<>(_Pair&&)): Likewise.
723 (unordered_multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
724 (unordered_multimap<>::insert(note_type&&)): Likewise.
725 (unordered_multimap<>::insert(const_iterator, note_type&&)): Likewise.
726 (unordered_multimap<>::find(const key_type&)): Likewise.
727 (unordered_multimap<>::equal_range(const key_type&)): Likewise.
728 (unordered_multimap<>::_M_extract): New.
729 (unordered_multimap<>::extract(const_iterator)): Use latter.
730 (unordered_multimap<>::extract(const key_type&)): Likewise.
731 (unordered_multimap<>::_M_erase): New.
732 (unordered_multimap<>::erase(const_iterator)): Likewise.
733 (unordered_multimap<>::erase(iterator)): Likewise.
734 (unordered_multimap<>::_M_invalidate): New.
735 (unordered_multimap<>::erase(const key_type&)): Use latter.
736 (unordered_multimap<>::erase(const_iterator, const_iterator)): Likewise.
737 * include/debug/unordered_set
738 (unordered_set<>::begin()): Use C++11 direct initialization.
739 (unordered_set<>::end()): Likewise.
740 (unordered_set<>::cbegin()): Likewise.
741 (unordered_set<>::cend()): Likewise.
742 (unordered_set<>::begin(size_type)): Likewise.
743 (unordered_set<>::end(size_type)): Likewise.
744 (unordered_set<>::cbegin(size_type)): Likewise.
745 (unordered_set<>::cend(size_type)): Likewise.
746 (unordered_set<>::emplace<>(_Args&&...)): Likewise.
747 (unordered_set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
748 (unordered_set<>::insert(const value_type&)): Likewise.
749 (unordered_set<>::insert(value_type&&)): Likewise.
750 (unordered_set<>::insert(const_iterator, const value_type&)): Likewise.
751 (unordered_set<>::insert(const_iterator, value_type&&)): Likewise.
752 (unordered_set<>::insert(note_type&&)): Likewise.
753 (unordered_set<>::insert(const_iterator, note_type&&)): Likewise.
754 (unordered_set<>::find(const key_type&)): Likewise.
755 (unordered_set<>::equal_range(const key_type&)): Likewise.
756 (unordered_set<>::_M_extract): New.
757 (unordered_set<>::extract(const_iterator)): Use latter.
758 (unordered_set<>::extract(const key_type&)): Likewise.
759 (unordered_set<>::_M_erase): New.
760 (unordered_set<>::erase(const key_type&)): Use latter.
761 (unordered_set<>::erase(const_iterator)): Likewise.
762 (unordered_set<>::erase(iterator)): Likewise.
763 (unordered_set<>::_M_invalidate): New.
764 (unordered_set<>::erase(const_iterator, const_iterator)): Use latter.
765 (unordered_multiset<>::begin()): Use C++11 direct initialization.
766 (unordered_multiset<>::end()): Likewise.
767 (unordered_multiset<>::cbegin()): Likewise.
768 (unordered_multiset<>::cend()): Likewise.
769 (unordered_multiset<>::begin(size_type)): Likewise.
770 (unordered_multiset<>::end(size_type)): Likewise.
771 (unordered_multiset<>::cbegin(size_type)): Likewise.
772 (unordered_multiset<>::cend(size_type)): Likewise.
773 (unordered_multiset<>::emplace<>(_Args&&...)): Likewise.
774 (unordered_multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
775 (unordered_multiset<>::insert(const value_type&)): Likewise.
776 (unordered_multiset<>::insert(const_iterator, const value_type&)): Likewise.
777 (unordered_multiset<>::insert(value_type&&)): Likewise.
778 (unordered_multiset<>::insert(const_iterator, value_type&&)): Likewise.
779 (unordered_multiset<>::insert(node_type&&)): Likewise.
780 (unordered_multiset<>::insert(const_iterator, node_type&&)): Likewise.
781 (unordered_multiset<>::find(const key_type&)): Likewise.
782 (unordered_multiset<>::equal_range(const key_type&)): Likewise.
783 (unordered_multiset<>::_M_extract): New.
784 (unordered_multiset<>::extract(const_iterator)): Use latter.
785 (unordered_multiset<>::extract(const key_type&)): Likewise.
786 (unordered_multiset<>::_M_erase): New.
787 (unordered_multiset<>::erase(const_iterator)): Likewise.
788 (unordered_multiset<>::erase(iterator)): Likewise.
789 (unordered_multiset<>::_M_invalidate): New.
790 (unordered_multiset<>::erase(const key_type&)): Use latter.
791 (unordered_multiset<>::erase(const_iterator, const_iterator)): Likewise.
793 * include/c_global/cstddef: Add versioned namespace.
795 2018-10-23 Jonathan Wakely <jwakely@redhat.com>
798 * include/bits/unique_ptr.h (unique_ptr::unique_ptr(nullptr_t)): Do
799 not delegate to default constructor.
800 (unique_ptr<T[], D>::unique_ptr(nullptr_t)): Likewise.
801 * testsuite/20_util/unique_ptr/cons/incomplete.cc: New test.
803 2018-10-20 François Dumont <fdumont@gcc.gnu.org>
805 * testsuite/util/testsuite_containers.h
806 (forward_members_unordered<>::forward_members_unordered
807 (const value_type&)): Add local_iterator pre and post increment checks.
808 * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 new symbol.
810 2018-10-19 Jonathan Wakely <jwakely@redhat.com>
812 * testsuite/23_containers/array/requirements/explicit_instantiation/
813 3.cc: Skip test when compiled with a -std=c++NN strict mode.
814 * testsuite/23_containers/deque/requirements/explicit_instantiation/
816 * testsuite/23_containers/forward_list/requirements/
817 explicit_instantiation/3.cc: Likewise.
818 * testsuite/23_containers/list/requirements/explicit_instantiation/
820 * testsuite/23_containers/map/requirements/explicit_instantiation/
822 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
824 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
826 * testsuite/23_containers/set/requirements/explicit_instantiation/
828 * testsuite/23_containers/unordered_map/requirements/
829 explicit_instantiation/3.cc: Likewise.
830 * testsuite/23_containers/unordered_multimap/requirements/
831 explicit_instantiation/3.cc: Likewise.
832 * testsuite/23_containers/unordered_multiset/requirements/
833 explicit_instantiation/3.cc: Likewise.
834 * testsuite/23_containers/unordered_set/requirements/
835 explicit_instantiation/3.cc: Likewise.
836 * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
838 * testsuite/23_containers/vector/requirements/explicit_instantiation/
841 * testsuite/23_containers/deque/48101_neg.cc: Prune additional errors
842 printed when __STRICT_ANSI__ is defined.
843 * testsuite/23_containers/forward_list/48101_neg.cc: Likewise.
844 * testsuite/23_containers/list/48101_neg.cc: Likewise.
845 * testsuite/23_containers/multiset/48101_neg.cc: Likewise.
846 * testsuite/23_containers/set/48101_neg.cc: Likewise.
847 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
848 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
849 * testsuite/23_containers/vector/48101_neg.cc: Likewise.
851 * testsuite/23_containers/forward_list/requirements/
852 explicit_instantiation/5.cc [__STRICT_ANSI__]: Don't test non-standard
854 * testsuite/23_containers/list/requirements/explicit_instantiation/
855 5.cc [__STRICT_ANSI__]: Likewise.
856 * testsuite/23_containers/map/requirements/explicit_instantiation/5.cc
857 [__STRICT_ANSI__]: Likewise.
858 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
859 5.cc [__STRICT_ANSI__]: Likewise.
860 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
861 5.cc [__STRICT_ANSI__]: Likewise.
862 * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc
863 [__STRICT_ANSI__]: Likewise.
864 * testsuite/23_containers/unordered_map/requirements/debug_container.cc
865 [__STRICT_ANSI__]: Likewise.
866 * testsuite/23_containers/unordered_map/requirements/
867 explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
868 * testsuite/23_containers/unordered_multimap/requirements/
869 explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
870 * testsuite/23_containers/unordered_multiset/requirements/
871 explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
872 * testsuite/23_containers/unordered_set/requirements/
873 explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
875 * testsuite/20_util/scoped_allocator/1.cc: Use allocator with correct
876 value type for the container.
877 * testsuite/23_containers/forward_list/cons/14.cc: Likewise.
878 * testsuite/23_containers/map/56613.cc: Likewise.
879 * testsuite/23_containers/unordered_map/55043.cc: Likewise.
880 * testsuite/23_containers/unordered_map/allocator/copy.cc: Likewise.
881 * testsuite/23_containers/unordered_map/allocator/copy_assign.cc:
883 * testsuite/23_containers/unordered_map/allocator/minimal.cc:
885 * testsuite/23_containers/unordered_map/allocator/move.cc: Likewise.
886 * testsuite/23_containers/unordered_map/allocator/move_assign.cc:
888 * testsuite/23_containers/unordered_map/allocator/noexcept.cc:
890 * testsuite/23_containers/unordered_map/cons/81891.cc: Likewise.
891 * testsuite/23_containers/unordered_map/requirements/exception/
893 * testsuite/23_containers/unordered_map/requirements/exception/
894 generation_prohibited.cc: Likewise.
895 * testsuite/23_containers/unordered_map/requirements/exception/
896 propagation_consistent.cc: Likewise.
897 * testsuite/23_containers/unordered_multimap/55043.cc: Likewise.
898 * testsuite/23_containers/unordered_multimap/allocator/copy.cc:
900 * testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc:
902 * testsuite/23_containers/unordered_multimap/allocator/minimal.cc:
904 * testsuite/23_containers/unordered_multimap/allocator/move.cc:
906 * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc:
908 * testsuite/23_containers/unordered_multimap/allocator/noexcept.cc:
910 * testsuite/23_containers/unordered_multimap/requirements/exception/
912 * testsuite/23_containers/unordered_multimap/requirements/exception/
913 generation_prohibited.cc: Likewise.
914 * testsuite/23_containers/unordered_multimap/requirements/exception/
915 propagation_consistent.cc: Likewise.
916 * testsuite/23_containers/unordered_multimap/requirements/
917 explicit_instantiation/5.cc: Likewise.
918 * testsuite/ext/malloc_allocator/sanity.cc: Likewise.
920 * ext/special_functions/airy_ai/check_nan.cc: Skip test for
921 non-standard extension when a strict -std=c++NN dialect is used.
922 * ext/special_functions/airy_ai/check_value.cc: Likewise.
923 * ext/special_functions/airy_ai/compile.cc: Likewise.
924 * ext/special_functions/airy_bi/check_nan.cc: Likewise.
925 * ext/special_functions/airy_bi/check_value.cc: Likewise.
926 * ext/special_functions/airy_bi/compile.cc: Likewise.
927 * ext/special_functions/conf_hyperg/check_nan.cc: Likewise.
928 * ext/special_functions/conf_hyperg/check_value.cc: Likewise.
929 * ext/special_functions/conf_hyperg/compile.cc: Likewise.
930 * ext/special_functions/hyperg/check_nan.cc: Likewise.
931 * ext/special_functions/hyperg/check_value.cc: Likewise.
932 * ext/special_functions/hyperg/compile.cc: Likewise.
934 * testsuite/23_containers/list/requirements/explicit_instantiation/
935 5_c++0x.cc: Remove redundant test that is functionally identical to
937 * testsuite/23_containers/map/requirements/explicit_instantiation/
938 5_c++0x.cc: Likewise.
939 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
940 5_c++0x.cc: Likewise.
941 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
942 5_c++0x.cc: Likewise.
943 * testsuite/23_containers/set/requirements/explicit_instantiation/
944 5_c++0x.cc: Likewise.
946 * include/bits/regex_executor.tcc (_Backref_matcher::_M_apply): Use
947 _GLIBCXX_STD_A to refer to normal mode algorithms.
948 * testsuite/28_regex/headers/regex/parallel_mode.cc: New test.
949 * testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Remove empty
952 * include/debug/map.h (map::erase(iterator)): Add abi-tag so that
953 C++11 version mangles differently from incompatible C++98 version.
954 * include/debug/multimap.h (multimap::erase(iterator)): Likewise.
955 * include/debug/multiset.h (multiset::erase(iterator))
956 (multiset::erase(const_iterator, const_iterator)): Likewise.
957 * include/debug/set.h (set::erase(iterator))
958 (multiset::erase(const_iterator, const_iterator)): Likewise.
960 2018-10-18 Jonathan Wakely <jwakely@redhat.com>
962 * testsuite/20_util/duration/cons/2.cc: Add -ffloat-store to fix
963 failure when compiled without optimisation.
964 * testsuite/ext/profile/mutex_extensions_neg.cc: Prune additional
965 errors caused by C++17 std::pmr alias templates.
968 * config/locale/gnu/monetary_members.cc
969 (moneypunct<char, true>::_M_initialize_moneypunct): Use
970 __narrow_multibyte_chars to convert multibyte thousands separators
972 * config/locale/gnu/numeric_members.cc
973 (numpunct<char>::_M_initialize_numpunct): Likewise.
974 (__narrow_multibyte_chars): New function.
977 * include/bits/valarray_array.h (__valarray_sum): Use first element
978 to initialize accumulator instead of value-initializing it.
979 (__valarray_product<_Tp>): Move to ...
980 * src/c++98/valarray.cc (__valarray_product<_Tp>): Here. Use first
981 element to initialize accumulator.
982 (__valarray_product(const valarray<size_t>&)): Remove const_cast made
983 unnecessary by LWG 389.
984 * testsuite/26_numerics/valarray/87641.cc: New test.
986 2018-10-18 François Dumont <fdumont@gcc.gnu.org>
989 2018-10-08 François Dumont <fdumont@gcc.gnu.org>
991 * include/debug/list (list<>::cbegin()): Use C++11 direct
993 (list<>::cend()): Likewise.
994 (list<>::erase(const_iterator, const_iterator)): Ensure consistent
995 iterator comparisons.
996 (list<>::splice(const_iterator, list&&, const_iterator,
997 const_iterator)): Likewise.
1000 2018-10-15 François Dumont <fdumont@gcc.gnu.org>
1002 * include/debug/vector (vector<>::cbegin()): Use C++11 direct
1004 (vector<>::cend()): Likewise.
1005 (vector<>::insert(const_iterator, const _Tp&)): Use consistent
1006 iterator comparison.
1007 (vector<>::erase(const_iterator)): Likewise.
1008 (vector<>::erase(const_iterator, const_iterator)): Likewise.
1010 2018-10-17 Ville Voutilainen <ville.voutilainen@gmail.com>
1013 * include/std/variant (__select_index): Fix an off-by-one.
1014 * testsuite/20_util/variant/87619.cc: New.
1016 2018-10-16 Jonathan Wakely <jwakely@redhat.com>
1018 * include/bits/random.h (random_device) [!_GLIBCXX_USE_DEV_RANDOM]:
1019 Fix default constructor to call correct function.
1021 * testsuite/experimental/net/internet/address/v4/creation.cc: Do not
1022 declare ip in global namespace, to avoid collision with struct ip
1023 defined in <netinet/ip.h>.
1025 * include/experimental/bits/net.h: Move versioned namespace macros
1026 to correct location.
1027 * include/experimental/buffer: Likewise.
1028 * include/experimental/executor: Likewise.
1029 * include/experimental/internet: Likewise.
1030 * include/experimental/io_context: Likewise.
1031 * include/experimental/netfwd: Likewise.
1032 * include/experimental/socket: Likewise.
1033 * include/experimental/timer: Likewise.
1035 * config.h.in: Regenerate.
1036 * configure: Regenerate.
1037 * configure.ac: Check for headers used by Networking TS.
1038 * include/experimental/executor: Include <condition_variable>
1040 * include/experimental/internet: Use autoconf macros for available
1041 headers. Include <sys/socket.h> for. Remove <cstring> and use
1042 __builtin_memcpy and __builtin_strchr.
1043 (resolver_errc) [!_GLIBCXX_HAVE_NETDB_H]: Do not define.
1044 (address_v4::to_string, address_v6::to_string)
1045 [!_GLIBCXX_HAVE_ARPA_INET_H]: Likewise.
1046 (basic_resolver_results) [!_GLIBCXX_HAVE_NETDB_H]: Make private
1047 constructors report errors.
1048 [!_GLIBCXX_HAVE_NETINET_TCP_H] (tcp::no_delay): Do not define.
1049 * include/experimental/io_context: Likewise.
1050 * include/experimental/socket: Likewise.
1051 [!_GLIBCXX_HAVE_SYS_SOCKET_H, !_GLIBCXX_HAVE_POLL_H] (socket_base): Do
1052 not define nested types when relevant header not available.
1053 (__socket_impl::native_non_blocking) [!_GLIBCXX_HAVE_FCNTL_H]: Report
1055 (__basic_socket_impl::open, __basic_socket_impl::local_endpoint)
1056 (__basic_socket_impl::bind) [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
1057 (__basic_socket_impl::io_control) [!_GLIBCXX_HAVE_SYS_IOCTL_H]:
1059 (basic_socket::at_mark, basic_socket::shutdown)
1060 (basic_socket::remote_endpoint, basic_socket::connect)
1061 (basic_socket::async_connect) [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
1062 (basic_socket::available) [_GLIBCXX_HAVE_SYS_IOCTL_H]: Check macro
1063 for <sys/ioctl.h> availability.
1064 (basic_socket::wait) [!_GLIBCXX_HAVE_POLL_H]: Likewise.
1065 (basic_datagram_socket::receive, basic_datagram_socket::async_receive)
1066 (basic_datagram_socket::receive_from)
1067 (basic_datagram_socket::async_receive_from)
1068 (basic_datagram_socket::send, basic_datagram_socket::async_send)
1069 (basic_datagram_socket::send_to, basic_datagram_socket::async_send_to)
1070 [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
1071 (basic_stream_socket::receive, basic_stream_socket::async_receive)
1072 (basic_stream_socket::send, basic_stream_socket::async_send)
1073 [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Likewise.
1074 (basic_socket_acceptor::listen, basic_socket_acceptor::accept)
1075 (basic_socket_acceptor::async_accept) [!_GLIBCXX_HAVE_SYS_SOCKET_H]:
1077 (basic_socket_acceptor::wait) [!_GLIBCXX_HAVE_POLL_H]: Likewise.
1079 * testsuite/experimental/net/headers.cc: Remove dg-options.
1080 * testsuite/experimental/net/buffer/arithmetic.cc: Replace dg-options
1081 with dg-do using effective target.
1082 * testsuite/experimental/net/buffer/const.cc: Likewise.
1083 * testsuite/experimental/net/buffer/creation.cc: Likewise.
1084 * testsuite/experimental/net/buffer/mutable.cc: Likewise.
1085 * testsuite/experimental/net/buffer/size.cc: Likewise.
1086 * testsuite/experimental/net/buffer/traits.cc: Likewise.
1087 * testsuite/experimental/net/execution_context/use_service.cc:
1089 * testsuite/experimental/net/internet/address/v4/comparisons.cc:
1091 * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise.
1092 * testsuite/experimental/net/internet/address/v4/creation.cc:
1094 * testsuite/experimental/net/internet/address/v4/members.cc: Likewise.
1095 * testsuite/experimental/net/internet/resolver/base.cc: Likewise.
1096 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
1098 * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
1100 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
1101 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
1102 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
1104 * include/experimental/socket (basic_socket::at_mark): Add missing
1107 * acinclude.m4 (GLIBCXX_CHECK_RANDOM_TR1): Replace with ...
1108 (GLIBCXX_CHECK_DEV_RANDOM): New macro with more descriptive name.
1109 Define _GLIBCXX_USE_DEV_RANDOM as well as _GLIBCXX_USE_RANDOM_TR1.
1110 * config.h.in: Regenerate.
1111 * configure: Regenerate.
1112 * configure.ac: Use GLIBCXX_CHECK_DEV_RANDOM instead of
1113 GLIBCXX_CHECK_RANDOM_TR1.
1114 crossconfig.m4: Likewise.
1115 * include/bits/random.h (random_device): Use _GLIBCXX_USE_DEV_RANDOM
1116 instead of _GLIBCXX_USE_RANDOM_TR1.
1117 * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
1119 2018-10-16 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1121 * testsuite/lib/dg-options.exp (add_options_for_net_ts): New proc.
1122 * testsuite/experimental/net/internet/address/v4/comparisons.cc:
1123 Add dg-add-options net_ts.
1124 * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise.
1125 * testsuite/experimental/net/internet/address/v4/creation.cc: Likewise.
1126 * testsuite/experimental/net/internet/address/v4/members.cc: Likewise.
1127 * testsuite/experimental/net/internet/resolver/base.cc: Likewise.
1128 * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise.
1129 * testsuite/experimental/net/internet/resolver/ops/reverse.cc: Likewise.
1131 2018-10-16 Jonathan Wakely <jwakely@redhat.com>
1133 * testsuite/20_util/duration/literals/range_neg.cc: Adjust pruned
1134 diagnostic to account for quotes around 'constexpr'.
1135 * testsuite/23_containers/deque/capacity/max_size.cc: Define static
1137 * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
1140 * config/abi/pre/gnu.ver: Fix typos in patterns for basic_stringbuf.
1141 * testsuite/27_io/basic_stringbuf/cons/char/default.cc: Disable
1142 optimisation to check constructor definition can be linked to.
1143 * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: Likewise.
1145 2018-10-15 Jonathan Wakely <jwakely@redhat.com>
1147 * testsuite/22_locale/numpunct/members/char/3.cc: Adjust test to
1148 account for change to glibc it_IT localedata (glibc bz#10797).
1151 * src/c++11/cxx11-shim_facets.cc: Suppress -Wabi warnings.
1153 2018-10-15 François Dumont <fdumont@gcc.gnu.org>
1155 * include/debug/vector (vector<>::cbegin()): Use C++11 direct
1157 (vector<>::cend()): Likewise.
1158 (vector<>::emplace(const_iterator, _Args&&...)): Likewise and use
1159 consistent iterator comparison.
1160 (vector<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
1161 (vector<>::insert(const_iterator, _InputIterator, _InputIterator)):
1163 (vector<>::erase(const_iterator)): Likewise.
1164 (vector<>::erase(const_iterator, const_iterator)): Likewise.
1166 2018-10-12 Jonathan Wakely <jwakely@redhat.com>
1168 Initial commit of Networking TS implementation.
1169 * include/Makefile.am: Add new headers.
1170 * include/Makefile.in: Regenerate.
1171 * include/experimental/bits/net.h: New header for common
1172 implementation details of Networking TS.
1173 * include/experimental/buffer: New header.
1174 * include/experimental/executor: New header.
1175 * include/experimental/internet: New header.
1176 * include/experimental/io_context: New header.
1177 * include/experimental/net: New header.
1178 * include/experimental/netfwd: New header.
1179 * include/experimental/socket: New header.
1180 * include/experimental/timer: New header.
1181 * testsuite/experimental/net/buffer/arithmetic.cc: New test.
1182 * testsuite/experimental/net/buffer/const.cc: New test.
1183 * testsuite/experimental/net/buffer/creation.cc: New test.
1184 * testsuite/experimental/net/buffer/mutable.cc: New test.
1185 * testsuite/experimental/net/buffer/size.cc: New test.
1186 * testsuite/experimental/net/buffer/traits.cc: New test.
1187 * testsuite/experimental/net/execution_context/use_service.cc: New
1189 * testsuite/experimental/net/headers.cc: New test.
1190 * testsuite/experimental/net/internet/address/v4/comparisons.cc: New
1192 * testsuite/experimental/net/internet/address/v4/cons.cc: New test.
1193 * testsuite/experimental/net/internet/address/v4/creation.cc: New
1195 * testsuite/experimental/net/internet/address/v4/members.cc: New
1197 * testsuite/experimental/net/internet/resolver/base.cc: New test.
1198 * testsuite/experimental/net/internet/resolver/ops/lookup.cc: New
1200 * testsuite/experimental/net/internet/resolver/ops/reverse.cc: New
1202 * testsuite/experimental/net/timer/waitable/cons.cc: New test.
1203 * testsuite/experimental/net/timer/waitable/dest.cc: New test.
1204 * testsuite/experimental/net/timer/waitable/ops.cc: New test.
1207 * include/experimental/memory_resource (__resource_adaptor_imp): Do
1208 not allocate sizes smaller than alignment when relying on guaranteed
1210 * testsuite/experimental/memory_resource/new_delete_resource.cc:
1211 Adjust expected number of bytes allocated for alignof(max_align_t).
1213 2018-10-11 François Dumont <fdumont@gcc.gnu.org>
1215 * include/debug/forward_list
1216 (forward_list<>::before_begin()): Use C++11 direct initialization.
1217 (forward_list<>::begin()): Likewise.
1218 (forward_list<>::end()): Likewise.
1219 (forward_list<>::cbefore_begin()): Likewise.
1220 (forward_list<>::cbegin()): Likewise.
1221 (forward_list<>::cend()): Likewise.
1222 (forward_list<>::emplace_after<>(const_iterator, _Args&&...)): Likewise.
1223 (forward_list<>::insert_after(const_iterator, const _Tp&)): Likewise.
1224 (forward_list<>::insert_after(const_iterator, _Tp&&)): Likewise.
1225 (forward_list<>::insert_after(const_iterator, size_type, const _Tp&)):
1227 (forward_list<>::insert_after(const_iterator, initializer_list<>)):
1229 (forward_list<>::erase_after(const_iterator)): Likewise.
1230 (forward_list<>::erase_after(const_iterator, const_iterator)): Likewise
1231 and ensure consistent iterator comparison.
1233 * include/bits/forward_list.h
1234 (_Fwd_list_iterator<>::operator==): Replace member function with inline
1236 (_Fwd_list_iterator<>::operator!=): Likewise.
1237 (_Fwd_list_const_iterator<>::operator==): Likewise.
1238 (_Fwd_list_const_iterator<>::operator!=): Likewise.
1239 (operator==(const _Fwd_list_iterator<>&,
1240 const _Fwd_list_const_iterator<>&)): Remove.
1241 (operator!=(const _Fwd_list_iterator<>&,
1242 const _Fwd_list_const_iterator<>&)): Remove.
1243 (forward_list<>::_Node): Take typedef from base type.
1244 (forward_list<>::iterator): Likewise.
1245 (forward_list<>::const_iterator): Likewise.
1247 2018-10-11 Jonathan Wakely <jwakely@redhat.com>
1250 * src/c++11/thread.cc (this_thread::__sleep_for)
1251 [_GLIBCXX_HAVE_SLEEP]: Only call sleep for non-zero values.
1252 Loop while sleep call is interrupted and until steady_clock
1253 shows requested duration has elapsed.
1254 (!_GLIBCXX_HAVE_USLEEP]: Use the _GLIBCXX_HAVE_SLEEP code path, but
1255 avoiding the usleep call.
1256 * testsuite/30_threads/this_thread/60421.cc: Test repeated
1257 signal interruptions.
1259 * include/bits/allocator.h
1260 (operator==(const allocator<_Tp>&, const allocator<_Tp>))
1261 (operator!=(const allocator<_Tp>&, const allocator<_Tp>)): Replace
1262 with inline friends.
1263 * include/ext/debug_allocator.h (operator==, operator!=): Replace
1264 with inline friend functions that compare to rebound allocators.
1265 * include/ext/malloc_allocator.h (operator==, operator!=): Likewise.
1266 * include/ext/new_allocator.h (operator==, operator!=): Likewise.
1267 * testsuite/ext/debug_allocator/eq.cc: New test.
1268 * testsuite/ext/ext_pointer/alloc_eq.cc: New test.
1269 * testsuite/ext/malloc_allocator/eq.cc: New test.
1270 * testsuite/ext/new_allocator/eq.cc: New test.
1272 2018-10-10 Jonathan Wakely <jwakely@redhat.com>
1275 * include/bits/stl_vector.h (vector::_S_max_size): Limit size to
1276 PTRDIFF_MAX / sizeof(value_type).
1277 * include/ext/malloc_allocator.h (malloc_allocator::max_size):
1279 * include/ext/new_allocator.h (new_allocator::max_size): Likewise.
1280 * testsuite/23_containers/vector/allocator/minimal.cc: Adjust
1281 expected value for max_size().
1282 * testsuite/23_containers/vector/capacity/87544.cc: New test.
1284 2018-10-09 François Dumont <fdumont@gcc.gnu.org>
1286 * include/bits/stl_list.h
1287 (_List_operator<>::operator==): Replace member function with inline
1289 (_List_operator<>::operator!=): Likewise.
1290 (_List_const_operator<>::operator==): Likewise.
1291 (_List_const_operator<>::operator!=): Likewise.
1292 (operator==(const _List_iterator<>&, const _List_const_iterator<>&)):
1294 (operator!=(const _List_iterator<>&, const _List_const_iterator<>&)):
1297 2018-10-09 Jonathan Wakely <jwakely@redhat.com>
1299 * include/bits/stringfwd.h (string, wstring, u16string, u32string):
1300 Define typedefs outside of __cxx11 inline namespace.
1301 * python/libstdcxx/v6/printers.py (register_type_printers): Also
1302 register printers for typedefs in new location.
1304 2018-10-08 Jonathan Wakely <jwakely@redhat.com>
1307 * testsuite/experimental/functional/87538.cc: New test.
1310 * include/std/functional (_Not_fn::operator()): Check value of
1311 __is_nothrow_invocable as well.
1312 * testsuite/20_util/function_objects/not_fn/87538.cc: New test.
1314 2018-10-08 François Dumont <fdumont@gcc.gnu.org>
1316 * include/debug/list (list<>::cbegin()): Use C++11 direct
1318 (list<>::cend()): Likewise.
1319 (list<>::emplace<>(const_iterator, _Args&&...)): Likewise.
1320 (list<>::insert(const_iterator, initializer_list<>)): Likewise.
1321 (list<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
1322 (list<>::erase(const_iterator, const_iterator)): Ensure consistent
1323 iterator comparisons.
1324 (list<>::splice(const_iterator, list&&, const_iterator,
1325 const_iterator)): Likewise.
1327 2018-10-05 François Dumont <fdumont@gcc.gnu.org>
1329 * include/bits/stl_tree.h
1330 (_Rb_tree_iterator<>::operator==): Make inline friend.
1331 (_Rb_tree_iterator<>::operator!=): Likewise.
1332 (_Rb_tree_const_iterator<>::operator==): Likewise.
1333 (_Rb_tree_const_iterator<>::operator!=): Likewise.
1334 (operator==(const _Rb_tree_iterator<>&,
1335 const _Rb_tree_const_iterator&)): Remove.
1336 (operator!=(const _Rb_tree_iterator<>&,
1337 const _Rb_tree_const_iterator&)): Remove.
1338 (operator==(const _Rb_tree<>&, const _Rb_tree<>&)): Make inline friend.
1339 (operator<(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
1340 (operator!=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise and
1342 (operator>(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
1343 (operator<=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
1344 (operator>=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
1345 * include/debug/map.h (map<>::erase(const_iterator, const_iterator)):
1346 Compare __victim with _Base::cend().
1347 * include/debug/multimap.h
1348 (multimap<>::erase(const_iterator, const_iterator)): Likewise.
1349 * include/debug/set.h (set<>::erase(const_iterator, const_iterator)):
1350 Compare __victim with _Base::cend().
1351 * include/debug/multiset.h
1352 (multiset<>::erase(const_iterator, const_iterator)): Likewise.
1354 2018-10-03 Jonathan Wakely <jwakely@redhat.com>
1357 * src/c++98/locale.cc (locale::locale(const locale&)): Bypass
1358 reference count updates for the classic locale.
1359 (locale::~locale()): Likewise.
1360 (locale::operator=(const locale&)): Likewise.
1361 * src/c++98/locale_init.cc (locale::locale()): Likewise.
1362 (locale::global(const locale&)): Likewise.
1364 2018-10-03 François Dumont <fdumont@gcc.gnu.org>
1366 * include/debug/map.h
1367 (map<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
1368 (map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
1369 (map<>::insert(value_type&&)): Likewise.
1370 (map<>::insert<>(_Pair&&)): Likewise.
1371 (map<>::insert<>(const_iterator, _Pair&&)): Likewise.
1372 (map<>::try_emplace): Likewise.
1373 (map<>::insert_or_assign): Likewise.
1374 (map<>::insert(node_type&&)): Likewise.
1375 (map<>::insert(const_iterator, node_type&&)): Likewise.
1376 (map<>::erase(const_iterator)): Likewise.
1377 (map<>::erase(const_iterator, const_iterator)): Likewise.
1378 * include/debug/multimap.h
1379 (multimap<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
1380 (multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
1381 (multimap<>::insert<>(_Pair&&)): Likewise.
1382 (multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
1383 (multimap<>::insert(node_type&&)): Likewise.
1384 (multimap<>::insert(const_iterator, node_type&&)): Likewise.
1385 (multimap<>::erase(const_iterator)): Likewise.
1386 (multimap<>::erase(const_iterator, const_iterator)): Likewise.
1387 * include/debug/set.h
1388 (set<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
1389 (set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
1390 (set<>::insert(value_type&&)): Likewise.
1391 (set<>::insert<>(const_iterator, value_type&&)): Likewise.
1392 (set<>::insert(const_iterator, node_type&&)): Likewise.
1393 (set<>::erase(const_iterator)): Likewise.
1394 (set<>::erase(const_iterator, const_iterator)): Likewise.
1395 * include/debug/multiset.h
1396 (multiset<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
1397 (multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
1398 (multiset<>::insert<>(value_type&&)): Likewise.
1399 (multiset<>::insert<>(const_iterator, value_type&&)): Likewise.
1400 (multiset<>::insert(node_type&&)): Likewise.
1401 (multiset<>::insert(const_iterator, node_type&&)): Likewise.
1402 (multiset<>::erase(const_iterator)): Likewise.
1403 (multiset<>::erase(const_iterator, const_iterator)): Likewise.
1405 2018-10-02 Marc Glisse <marc.glisse@inria.fr>
1408 * include/bits/stl_bvector.h (vector::begin(), vector::cbegin()):
1409 Rebuild _M_start with an explicit 0 offset.
1411 2018-10-02 Jonathan Wakely <jwakely@redhat.com>
1413 * include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get
1414 directly instead of get, as caller ensures correct index is used.
1415 (holds_alternative, get, get_if): Remove redundant inline specifiers.
1416 (_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise.
1418 2018-10-02 Joseph Myers <joseph@codesourcery.com>
1420 * testsuite/lib/libstdc++.exp (libstdc++_init): Use
1421 -fno-show-column in default cxxflags.
1423 2018-10-01 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
1425 * config/os/uclibc/os_defines.h (__NO_STRING_INLINES): Delete.
1427 2018-10-01 Gerald Pfeifer <gerald@pfeifer.com>
1429 * doc/xml/manual/allocator.xml: Adjust link to "Reconsidering
1430 Custom Memory Allocation".
1432 2018-10-01 Jonathan Wakely <jwakely@redhat.com>
1434 * doc/html/*: Regenerate.
1436 2018-09-30 Gerald Pfeifer <gerald@pfeifer.com>
1438 * doc/xml/manual/messages.xml: Switch link to www.oracle.com
1441 2018-09-30 Gerald Pfeifer <gerald@pfeifer.com>
1443 * doc/xml/manual/policy_data_structures_biblio.xml: Update
1444 link to Microsoft Component Model Object Technologies.
1446 2018-09-29 Gerald Pfeifer <gerald@pfeifer.com>
1448 * doc/xml/gnu/fdl-1.3.xml: The Free Software Foundation web
1449 site now uses https. Also omit the unnecessary trailing slash.
1450 * doc/xml/gnu/gpl-3.0.xml: Ditto.
1452 2018-09-28 François Dumont <fdumont@gcc.gnu.org>
1454 * include/debug/functions.h
1455 (__foreign_iterator_aux3(const _Safe_iterator<>&, const _InputeIter&,
1456 const _InputIter&, __true_type)): Use empty() rather than begin() ==
1459 2018-09-25 Mike Crowe <mac@mcrowe.com>
1461 * include/std/condition_variable (condition_variable::wait_for): Use
1462 steady clock in overload that uses a predicate.
1464 2018-09-25 Jonathan Wakely <jwakely@redhat.com>
1467 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
1468 Avoid runtime test when all alternatives are scalars and so cannot
1469 throw during initialization.
1471 2018-09-25 Gerald Pfeifer <gerald@pfeifer.com>
1473 * doc/xml/manual/codecvt.xml: Move link to "UTF-8 and Unicode FAQ"
1476 2018-09-24 Gerald Pfeifer <gerald@pfeifer.com>
1478 * doc/xml/manual/policy_data_structures_biblio.xml: Update link
1479 to "Priority Queues and the STL".
1481 2018-09-23 Gerald Pfeifer <gerald@pfeifer.com>
1483 * doc/xml/manual/using_exceptions.xml: Move boost.orgs link to
1486 2018-09-21 François Dumont <fdumont@gcc.gnu.org>
1489 * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
1490 Use __builtin_floor to compute _M_next_resize.
1491 * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt.
1492 * testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc:
1495 2018-09-21 Jonathan Wakely <jwakely@redhat.com>
1497 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Remove.
1498 * testsuite/26_numerics/headers/cmath/hypot.cc: Restore test for
1499 long double unconditionally, but use lower tolerance when
1500 sizeof(long double) == sizeof(double).
1502 2018-09-20 Christophe Lyon <christophe.lyon@linaro.org>
1504 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Skip
1507 2018-09-19 Jonathan Wakely <jwakely@redhat.com>
1509 * include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()):
1510 Remove __glibcxx_assert statements and use map::find instead of
1513 2018-09-18 François Dumont <fdumont@gcc.gnu.org>
1516 * src/c++11/hashtable_c++0x.cc:
1517 (_Prime_rehash_policy::_M_next_bkt): Return a prime no smaller than
1518 requested size, but not necessarily greater.
1519 (_Prime_rehash_policy::_M_need_rehash): Rehash only if target size is
1520 strictly greater than next resize threshold.
1521 * testsuite/23_containers/unordered_map/modifiers/reserve.cc: Adapt test
1522 to validate that there is no rehash as long as number of insertion is
1523 lower or equal to the reserved number of elements.
1525 2018-09-18 Jonathan Wakely <jwakely@redhat.com>
1527 * include/bits/unique_ptr.h (__uniq_ptr_impl): Remove static assertion
1528 checking invocable condition.
1529 (unique_ptr::~unique_ptr, unique_ptr::reset): Restore static assertion
1530 here, where types must be complete. Pass pointer to deleter as an
1532 * testsuite/20_util/unique_ptr/requirements/incomplete.cc: New test.
1534 2018-09-13 Jonathan Wakely <jwakely@redhat.com>
1536 * include/std/variant (variant) [__clang__]: Limit workaround to
1539 2018-09-11 Jonathan Wakely <jwakely@redhat.com>
1542 * include/bits/shared_ptr.h (make_shared): Use remove_cv instead of
1544 * testsuite/20_util/shared_ptr/creation/87278.cc: New test.
1546 Implement LWG 2905 changes to constrain unique_ptr constructors
1547 * include/bits/unique_ptr.h (__uniq_ptr_impl): Add assertions to
1549 (unique_ptr::unique_ptr(pointer, const deleter_type&)): Add copy
1550 constructible constraint.
1551 (unique_ptr::unique_ptr(pointer, deleter_type&&)): Disable for
1552 deleters of reference type and add move constructible constraint.
1553 (unique_ptr::unique_ptr(pointer, remove_reference_t<deleter_type>&&)):
1554 Disable for deleters of non-reference type. Define as deleted.
1555 (unique_ptr<T[], D>): Likewise.
1556 * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error
1557 directives with unstable line numbers with dg-prune-output.
1558 * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
1559 * testsuite/20_util/unique_ptr/cons/lwg2905.cc: New test.
1560 * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
1561 Make deleter types invocable.
1563 2018-09-05 Jonathan Wakely <jwakely@redhat.com>
1565 * libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.
1567 2018-09-03 Jonathan Wakely <jwakely@redhat.com>
1570 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: New test
1571 that runs the long double part of hypot.cc.
1572 * testsuite/26_numerics/headers/cmath/hypot.cc: Disable long double
1573 tests unless TEST_HYPOT_LONG_DOUBLE is defined.
1575 * include/bits/stl_vector.h (vector::_Temporary_value::_M_ptr):
1576 Return raw pointer not allocator's pointer type.
1577 (vector::_Temporary_value::_M_val): Use _M_ptr.
1580 * include/bits/stl_map.h
1581 (map::map(initializer_list<value_type>, const Compare&, const Alloc&))
1582 (map::map(initializer_list<value_type>, const Alloc&))
1583 (map::map(InputIterator, InputIterator, const Alloc&))
1584 (map::map(InputIterator, InputIterator))
1585 (map::map(InputIterator, InputIterator, const Compare&, const Alloc&))
1586 (map::insert(InputIterator, InputIterator)):
1587 Call _M_insert_range_unique instead of _M_insert_unique.
1588 * include/bits/stl_multimap.h
1589 (multimap::multimap(initializer_list<value_type>, const C&, const A&))
1590 (multimap::multimap(initializer_list<value_type>, const A&))
1591 (multimap::multimap(InputIterator, InputIterator, const A&))
1592 (multimap::multimap(InputIterator, InputIterator))
1593 (multimap::multimap(InputIterator, InputIterator, const C&, const A&))
1594 (multimap::insert(InputIterator, InputIterator)): Call
1595 _M_insert_range_equal instead of _M_insert_equal.
1596 * include/bits/stl_multiset.h
1597 (multiset::multiset(InputIterator, InputIterator))
1598 (multiset::multiset(InputIterator, InputIterator, const C&, const A&))
1599 (multiset::multiset(initializer_list<value_type>, const C&, const A&))
1600 (multiset::multiset(initializer_list<value_type>, const A&))
1601 (multiset::multiset(InputIterator, InputIterator, const A&))
1602 (multiset::insert(InputIterator, InputIterator)): Call
1603 _M_insert_range_equal instead of _M_insert_equal.
1604 * include/bits/stl_set.h
1605 (set::set(InputIterator, InputIterator))
1606 (set::set(InputIterator, InputIterator, const Compare&, const Alloc&))
1607 (set::set(initializer_list<value_type>, const Compare&, const Alloc&))
1608 (set::set(initializer_list<value_type>, const Alloc&))
1609 (set::set(InputIterator, InputIterator, const Alloc&))
1610 (set::insert(InputIterator, InputIterator)):
1611 Call _M_insert_range_unique instead of _M_insert_unique.
1612 * include/bits/stl_tree.h
1613 [__cplusplus >= 201103L] (_Rb_tree::__same_value_type): New alias
1614 template for SFINAE constraints.
1615 [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_unique): Pair of
1616 constrained overloads that either insert or emplace, depending on
1617 iterator's value_type.
1618 [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_equal): Likewise.
1619 [__cplusplus < 201103L] (_Rb_tree::_M_insert_range_unique)
1620 (_Rb_tree::_M_insert_range_equal): New functions replacing range
1621 versions of _M_insert_unique and _M_insert_equal.
1622 (_Rb_tree::_M_insert_unique(_InputIterator, _InputIterator))
1623 (_Rb_tree::_M_insert_equal(_InputIterator, _InputIterator)): Remove.
1624 * testsuite/23_containers/map/modifiers/insert/87194.cc: New test.
1625 * testsuite/23_containers/multimap/modifiers/insert/87194.cc: New test.
1626 * testsuite/23_containers/multiset/modifiers/insert/87194.cc: New test.
1627 * testsuite/23_containers/set/modifiers/insert/87194.cc: New test.
1630 * include/bits/stl_map.h (map::insert(_Pair&&))
1631 (map::insert(const_iterator, _Pair&&)): Do emplace instead of insert.
1632 * include/bits/stl_multimap.h (multimap::insert(_Pair&&))
1633 (multimap::insert(const_iterator, _Pair&&)): Likewise.
1634 * include/bits/unordered_map.h (unordered_map::insert(_Pair&&))
1635 (unordered_map::insert(const_iterator, _Pair&&))
1636 (unordered_multimap::insert(_Pair&&))
1637 (unordered_multimap::insert(const_iterator, _Pair&&)): Likewise.
1638 * testsuite/23_containers/map/modifiers/insert/78595.cc: New test.
1639 * testsuite/23_containers/multimap/modifiers/insert/78595.cc: New test.
1640 * testsuite/23_containers/unordered_map/modifiers/78595.cc: New test.
1641 * testsuite/23_containers/unordered_multimap/modifiers/78595.cc: New
1644 2018-09-02 François Dumont <fdumont@gcc.gnu.org>
1646 * include/debug/safe_iterator.h
1647 (_Safe_iterator<_It, _Seq, _Cat>::_Self): New.
1648 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>::_Self):
1650 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1652 (_GLIBCXX_DEBUG_VERIFY_OPERANDS, _GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS)
1653 (_GLIBCXX_DEBUG_VERIFY_REL_OPERANDS)
1654 (_GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS): Define macros.
1655 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1656 ::operator+(difference_type)): Use latters, inline as friend.
1657 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
1658 ::operator-(difference_type)): Likewise.
1659 (operator==(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1661 (operator!=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1663 (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1664 (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1666 (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1667 (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1669 (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
1670 (operator+(difference_type, const _Safe_iterator<>&)): Likewise.
1671 (operator-(const _Safe_iterator<>&, difference_type)): Likewise.
1672 * include/debug/safe_iterator.tcc
1673 (_Safe_iterator<>::_M_can_advance(difference_type)): Take parameter by
1675 * include/debug/safe_local_iterator.h
1676 (_Safe_local_iterator<_It, _Seq>::_Self): New.
1677 (_Safe_local_iterator<_It, _Seq>::_OtherSelf): New.
1678 (_GLIBCXX_DEBUG_VERIFY_OPERANDS): Define macro.
1679 (operator==(const _Safe_local_iterator<>&,
1680 const _Safe_local_iterator<>&)): Use latter, inline as friend.
1681 (operator!=(const _Safe_local_iterator<>&,
1682 const _Safe_local_iterator<>&)): Likewise.
1683 * testsuite/util/testsuite_containers.h: Include utility.
1684 (struct forward_members_unordered<_Tp, bool>): Remove 2nd template
1686 (forward_members_unordered<>::forward_members_unordered(value_type&)):
1687 Add using namespace std::rel_ops.
1688 Add iterator_concept_checks on local_iterator and const_local_iterator.
1689 Add asserts on comparison between const_local_iterator and
1691 (struct forward_members_unordered<_Tp, false>): Remove partial
1693 * testsuite/23_containers/forward_list/types/1.cc: New.
1694 * testsuite/23_containers/list/types/1.cc: New.
1696 2018-09-01 Gerald Pfeifer <gerald@pfeifer.com>
1698 * doc/xml/manual/profile_mode.xml: Update three ieeexplore.ieee.org
1701 2018-08-31 Sandra Loosemore <sandra@codesourcery.com>
1703 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc:
1704 Add dg-require-fileio.
1705 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
1707 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
1709 * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
1711 * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc:
1713 * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
1715 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc: Likewise.
1716 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc: Likewise.
1717 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc: Likewise.
1718 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc: Likewise.
1719 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: Likewise.
1720 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc:
1722 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc:
1724 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc:
1726 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc:
1728 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc:
1730 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc:
1732 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc:
1734 * testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: Likewise.
1735 * testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: Likewise.
1736 * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: Likewise.
1737 * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: Likewise.
1738 * testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
1740 * testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc:
1742 * testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise.
1743 * testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Likewise.
1744 * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc: Likewise.
1745 * testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise.
1746 * testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc: Likewise.
1747 * testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc: Likewise.
1748 * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: Likewise.
1749 * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: Likewise.
1750 * testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc:
1752 * testsuite/27_io/objects/wchar_t/10.cc: Likewise.
1753 * testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
1754 * testsuite/27_io/objects/wchar_t/12048-2.cc: Likewise.
1755 * testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
1756 * testsuite/27_io/objects/wchar_t/12048-4.cc: Likewise.
1757 * testsuite/27_io/objects/wchar_t/12048-5.cc: Likewise.
1758 * testsuite/experimental/string_view/inserters/wchar_t/2.cc:
1760 * testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
1762 2018-08-30 Sandra Loosemore <sandra@codesourcery.com>
1764 * testsuite/experimental/propagate_const/observers/1.cc: Make
1765 dependence on -fdelete-null-pointer-checks explicit.
1767 2018-08-30 Jonathan Wakely <jwakely@redhat.com>
1769 * include/bits/hashtable_policy.h (__clp2): Fix calculation for LLP64
1770 targets where sizeof(size_t) > sizeof(long). Avoid undefined shifts
1771 of the number of bits in the type.
1772 * include/std/bit (__ceil2): Avoid undefined shifts.
1773 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Test values with
1774 the most signifiant bit set.
1776 * config/abi/pre/gnu.ver: Add missing exports for mingw.
1778 * include/ext/pointer.h (_Pointer_adapter): Define operators for
1779 pointer arithmetic using long long offsets.
1780 * testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
1783 2018-08-29 Jonathan Wakely <jwakely@redhat.com>
1786 * testsuite/22_locale/time_get/get_date/wchar_t/4.cc: Check D_FMT
1787 string for alternative format.
1789 2018-08-28 Jonathan Wakely <jwakely@redhat.com>
1792 * src/filesystem/std-path.cc (path::lexically_normal): When handling
1793 a dot-dot filename, preserve an empty final component in the iteration
1795 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use preferred-separator for
1797 * testsuite/27_io/filesystem/path/generation/normal.cc: Add new tests
1798 for more than two adjacent dot-dot filenames.
1799 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Replace slashes with
1800 preferred-separator in expected normalized strings.
1802 2018-08-25 Iain Sandoe <iain@sandoe.co.uk>
1805 * configure.host (OPT_LDFLAGS): Don't append
1806 -fvisibility-inlines-hidden for newer Darwin.
1808 2018-08-24 Marc Glisse <marc.glisse@inria.fr>
1811 * libsupc++/new (operator new(size_t, nothrow_t), operator
1812 new[](size_t, nothrow_t), operator new(size_t, align_val_t, nothrow_t),
1813 operator new[](size_t, align_val_t, nothrow_t)): Add malloc attribute.
1815 2018-08-24 Jonathan Wakely <jwakely@redhat.com>
1817 * include/debug/deque (std::__debug::deque): Declare.
1818 * include/debug/forward_list (std::__debug::forward_list): Declare.
1819 * include/debug/list (std::__debug::list): Declare.
1820 * include/debug/map (std::__debug::map): Declare.
1821 * include/debug/set (std::__debug::set): Declare.
1822 * include/debug/unordered_map (std::__debug::unordered_map): Declare.
1823 * include/debug/unordered_set (std::__debug::unordered_set): Declare.
1824 * include/debug/vector (std::__debug::vector): Declare.
1825 * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: New test.
1826 * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: New
1828 * testsuite/23_containers/list/pmr_typedefs_debug.cc: New test.
1829 * testsuite/23_containers/map/pmr_typedefs_debug.cc: New test.
1830 * testsuite/23_containers/multimap/pmr_typedefs_debug.cc: New test.
1831 * testsuite/23_containers/multiset/pmr_typedefs_debug.cc: New test.
1832 * testsuite/23_containers/set/pmr_typedefs_debug.cc: New test.
1833 * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc: New
1835 * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
1837 * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
1839 * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: New
1841 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
1842 Adjust dg-error lineno.
1843 * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: New
1846 2018-08-23 Jonathan Wakely <jwakely@redhat.com>
1848 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
1849 Only define when RTTI is enabled.
1851 * include/debug/vector (__niter_base): Define for C++98.
1853 * testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc:
1854 Fix C++98 test to not use C++11 features.
1855 * testsuite/25_algorithms/fill_n/2.cc: Likewise.
1857 * scripts/check_compile: Fix comments.
1859 * include/debug/string (insert(__const_iterator, _InIter, _InIter)):
1860 [!_GLIBCXX_USE_CXX11_ABI]: Replace use of C++11-only cbegin() with
1861 begin(), for C++98 compatibility.
1863 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
1864 (basic_string::__const_iterator): Change access to protected.
1865 [!_GLIBCXX_USE_CXX11_ABI] (basic_string::__const_iterator): Define
1866 as typedef for iterator.
1867 * include/debug/string (__const_iterator): Use typedef from base.
1868 (insert(const_iterator, _CharT))
1869 (replace(const_iterator, const_iterator, const basic_string&))
1870 (replace(const_iterator, const_iterator, const _CharT*, size_type))
1871 (replace(const_iterator, const_iterator, const CharT*))
1872 (replace(const_iterator, const_iterator, size_type, _CharT))
1873 (replace(const_iterator, const_iterator, _InputIter, _InputIter))
1874 (replace(const_iterator, const_iterator, initializer_list<_CharT>)):
1875 Change const_iterator parameters to __const_iterator.
1876 (insert(iterator, size_type, _CharT)): Add C++98 overload.
1877 (insert(const_iterator, _InputIterator, _InputIterator)): Change
1878 const_iterator parameter to __const_iterator.
1879 [!_GLIBCXX_USE_CXX11_ABI]: Add workaround for incorrect return type
1880 of base's member function.
1881 (insert(const_iterator, size_type, _CharT)) [!_GLIBCXX_USE_CXX11_ABI]:
1883 (insert(const_iterator, initializer_list<_CharT>))
1884 [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
1885 * testsuite/21_strings/basic_string/init-list.cc: Remove effective
1888 * testsuite/20_util/reference_wrapper/lwg2993.cc: Fix C++11 test to
1889 not use C++14 feature.
1890 * testsuite/23_containers/list/68222_neg.cc: Likewise.
1892 * testsuite/21_strings/basic_string/init-list.cc:
1894 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
1896 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
1899 * testsuite/23_containers/deque/capacity/max_size.cc: Fix test for
1901 * testsuite/23_containers/deque/modifiers/assign/1.cc: Likewise.
1902 * testsuite/23_containers/list/modifiers/assign/1.cc: Likewise.
1903 * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: Likewise.
1904 * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
1905 * testsuite/23_containers/vector/modifiers/assign/1.cc: Likewise.
1907 2018-08-22 Jonathan Wakely <jwakely@redhat.com>
1910 * include/experimental/regex [!_GLIBCXX_USE_CXX11_ABI]
1911 (experimental::pmr::match_results, experimental::pmr::cmatch)
1912 (experimental::pmr::smatch, experimental::pmr::wcmatch)
1913 (experimental::pmr::wsmatch): Do not declare for gcc4-compatible ABI,
1914 because COW strings don't support C++11 allocator model.
1915 * include/experimental/string [!_GLIBCXX_USE_CXX11_ABI]
1916 (experimental::pmr::basic_string, experimental::pmr::string)
1917 (experimental::pmr::u16string, experimental::pmr::u32string)
1918 (experimental::pmr::wstring): Likewise.
1919 * include/std/regex [!_GLIBCXX_USE_CXX11_ABI] (pmr::match_results)
1920 (pmr::cmatch, pmr::smatch, pmr::wcmatch, pmr::wsmatch): Likewise.
1921 * include/std/string [!_GLIBCXX_USE_CXX11_ABI] (pmr::basic_string)
1922 (pmr::string, pmr::u16string, pmr::u32string, pmr::wstring): Likewise.
1923 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Require
1925 * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
1928 * include/bits/deque.tcc (deque::_M_range_initialize): Use
1929 _S_check_init_len to check size.
1930 (deque::_M_push_back_aux, deque::_M_push_front_aux): Throw length
1931 error if size would exceed max_size().
1932 * include/bits/stl_deque.h (_Deque_base::size_type): Remove typedef.
1933 (_Deque_base(_Deque_base&&, const allocator_type&, size_t)): Use
1934 size_t instead of size_type.
1935 (deq(size_type, const allocator_type&)
1936 (deq(size_type, const value_type&, const allocator_type&)
1937 (deque::_M_initialize_dispatch): Use _S_check_init_len to check size.
1938 (deque::max_size): Call _S_max_size.
1939 (deque::_S_check_init_len, deque::_S_max_size): New functions.
1940 * include/bits/stl_vector.h (vector(size_type, const allocator_type&))
1941 (vector(size_type, const value_type&, const allocator_type&))
1942 (vector::_M_initialize_dispatch, vector::_M_range_initialize): Use
1943 _S_check_init_len to check size.
1944 (vector::max_size): Call _S_max_size.
1945 (vector::_M_check_len): Prevent max from being expanded as a
1946 function-like macro.
1947 (vector::_S_check_init_len, vector::_S_max_size): New functions.
1948 * include/bits/vector.tcc (vector::_M_assign_aux): Use
1949 _S_check_init_len to check size.
1950 * testsuite/23_containers/deque/capacity/max_size.cc: New test.
1951 * testsuite/23_containers/vector/capacity/max_size.cc: New test.
1953 2018-08-22 François Dumont <fdumont@gcc.gnu.org>
1956 * include/debug/safe_iterator.h
1957 (_Safe_iterator<_It, _Sq, _Cat>): Add category template parameter.
1958 (_Safe_iterator<>::_Const_iterator): Remove.
1959 (_Safe_iterator<>::_IsConstant): New.
1960 (_Safe_iterator<>::_OtherIterator): New.
1961 (_Safe_iterator<_It, _Sq, _Cat>::_Safe_iterator<_MutIte>(
1962 const _Safe_iterator<_MutIte, _Sq, _Cat>&)): Add _IsConstant::__value in
1963 __gnu_cxx::__enable_if condition.
1964 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to): New.
1965 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_from_begin): New.
1966 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to_end): New.
1967 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>): New.
1968 (_Safe_iterator<_It, _Sq, _Cat>::operator--()): Move...
1969 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
1970 ::operator--()): ...here.
1971 (_Safe_iterator<_It, _Sq, _Cat>::operator--(int)): Move...
1972 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
1973 ::operator--(int)): ...here.
1974 (_Safe_iterator<_It, _Sq, _Cat>::_M_decrementable()): Move...
1975 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
1976 ::_M_decrementable()): ...here.
1977 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>): New.
1978 (_Safe_iterator<_It, _Sq, _Cat>::operator[](const difference_type&)):
1980 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
1981 ::operator[](const difference_type&)): ...here.
1982 (_Safe_iterator<_It, _Sq, _Cat>::operator+=(const difference_type&)):
1984 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
1985 ::operator+=(const difference_type&)): ...here.
1986 (_Safe_iterator<_It, _Sq, _Cat>::operator+(const difference_type&)):
1988 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
1989 ::operator+(const difference_type&)): ...here.
1990 (_Safe_iterator<_It, _Sq, _Cat>::operator-=(const difference_type&)):
1992 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
1993 ::operator-=(const difference_type&)): ...here.
1994 (_Safe_iterator<_It, _Sq, _Cat>::operator-(const difference_type&)):
1996 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
1997 ::operator-(const difference_type&)): ...here.
1998 (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)):
1999 Constraint to random access iterators.
2000 (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
2002 (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
2003 (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
2005 (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
2006 (operator+(const difference_type&, const _Safe_iterator<>&)): Likewise.
2007 (__check_dereferenceable(const _Safe_iterator<>&)): Remove.
2008 (__get_distance): Remove.
2009 (__get_distance_from_begin): Remove.
2010 (__get_distance_to_end): Remove.
2011 (struct __is_safe_random_iterator<_Safe_iterator<>>): Remove partial
2013 (__base(const _Safe_iterator<>&, std::input_iterator_tag)): Remove.
2014 (__base(const _Safe_iterator<>&, std::random_access_iterator_tag)): Remove.
2015 (__base(const _Safe_iterator<>&)): Constraint to random access iterator.
2016 * include/debug/safe_iterator.tcc
2017 (_Safe_iterator<>::_M_get_distance_from_begin()): New.
2018 (_Safe_iterator<>::_M_get_distance_to_end()): New.
2019 (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator<>&)): New.
2020 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
2021 ::_M_valid_range): New.
2022 * include/debug/safe_local_iterator.h
2023 (_Safe_local_iterator<>::_Const_local_iterator): Remove.
2024 (_Safe_local_iterator<>::_IsConstant): New.
2025 (_Safe_local_iterator<>::_OtherIterator): New.
2026 (_Safe_local_iterator<_It, _Cont>::_Safe_local_iterator<_MutIte, _Cont>(
2027 const _Safe_local_iterator<_MutIte, _Seq>&)): Add _IsConstant::__value
2028 in __gnu_cxx::__enable_if condition. If singular compare base iterator
2029 with _MutIte rather than _It.
2030 (_Safe_local_iterator<>::_S_constant): Make constexpr.
2031 (_Safe_local_iterator<>::_M_get_distance_to): New.
2032 (__check_dereferenceable(const _Safe_local_iterator<>&)): Remove.
2033 (__get_distance(const _Safe_local_iterator<>&,
2034 const _Safe_local_iterator<>&, std::input_iterator_tag)): Remove.
2035 (__valid_range(const _Safe_local_iterator<>&,
2036 const _Safe_local_iterator<>&)): New.
2037 * include/debug/safe_local_iterator.tcc
2038 (_Safe_local_iterator<>::_M_get_distance_to): New.
2039 * include/debug/deque (std::__debug::deque<>): Add
2040 ::__gnu_debug::_Safe_iterator<> friend declaration.
2041 * include/debug/forward_list (std::__debug::forward_list<>): Likewise.
2042 * include/debug/list (std::__debug::list<>): Likewise.
2043 * include/debug/map.h (std::__debug::map<>): Likewise.
2044 * include/debug/multimap.h (std::__debug::multimap<>): Likewise.
2045 * include/debug/set.h (std::__debug::set<>): Likewise.
2046 * include/debug/multiset.h (std::__debug::multiset<>): Likewise.
2047 * include/debug/string (std::__debug::basic_string<>): Likewise.
2048 * include/debug/unordered_map (std::__debug::unordered_map<>): Likewise
2049 and add ::__gnu_debug::_Safe_local_iterator<> friend declaration.
2050 (std::__debug::unordered_multimap<>): Likewise.
2051 * include/debug/unordered_set (std::__debug::unordered_set<>): Likewise.
2052 (std::__debug::unordered_multiset<>): Likewise.
2053 * include/debug/formatter.h: Adapt.
2054 * include/debug/helper_functions.h
2055 (__gnu_debug::_Safe_local_iterator<>): Add declaration.
2056 (__get_distance<_Ite>(_Ite, _Ite, std::random_access_iterator_tag):
2057 Pass parameter by copy.
2058 (__get_distance<_Ite>(_Ite, _Ite, std::input_iterator_tag): Likewise.
2059 (__get_distance<_Ite>(_Ite, _Ite): Likewise.
2060 (__valid_range_aux<_Integral>): Pass _Integral by copy.
2061 (__valid_range<_InputIterator>): Pass _InputIterator by copy.
2062 (__valid_range<>(const _Safe_iterator<>&,
2063 const _Safe_iterator<>&, typename _Distance_traits<>::__type&)):
2065 (__valid_range(const _Safe_local_iterator<>&,
2066 const _Safe_local_iterator<>&, typename _Distance_traits<>::__type&)):
2068 (__valid_range<>(const _Safe_iterator<>&, const _Safe_iterator<>&)):
2070 (__valid_range(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&)):
2072 (__can_advance): Adapt.
2073 (struct __is_safe_random_iterator<>): Remove.
2074 (struct _SIter_base<>): Remove.
2075 * include/debug/functions.h: Include <bits/stl_iterator.h>.
2076 (__check_dereferenceable): Remove.
2077 (__foreign_iterator_aux4, __foreign_iterator_aux3): Adapt.
2078 (__foreign_iterator_aux2, __foreign_iterator_aux): Adapt.
2079 (__foreign_iterator): Adapt.
2080 * include/debug/stl_iterator.h
2081 (__is_safe_random_iterator<std::reverse_iterator<>>): Remove.
2082 (__base(const std::reverse_iterator<_Safe_iterator<_It, _Sq>)):
2083 Constraint for random access iterators.
2084 (__niter_base): Adapt.
2085 * testsuite/util/testsuite_containers.h:
2086 Include <bits/boost_concept_check.h>.
2087 (iterator_concept_checks<_It, _Mutable, _Category>): New.
2088 (citerator<_Cont>::forward_members::forward_members()): Instantiate
2089 latter for container iterator and const_iterator.
2090 * testsuite/23_containers/list/68222_neg.cc: New.
2091 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: Adapt
2093 * testsuite/23_containers/unordered_set/debug/debug_functions.cc:
2095 * testsuite/23_containers/vector/debug/debug_functions.cc (test01):
2098 2018-08-22 Jonathan Wakely <jwakely@redhat.com>
2101 * doc/xml/manual/status_cxx1998.xml: Document size_type and
2102 difference_type for containers.
2103 * doc/html/*: Regenerate.
2105 2018-08-21 François Dumont <fdumont@gcc.gnu.org>
2107 P0646R1 Improving the Return Value of Erase-Like Algorithms I
2108 * include/debug/forward_list (forward_list::__remove_return_type):
2109 Define typedef as size_type or void, according to __cplusplus value.
2110 (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
2111 empty, according to __cplusplus value.
2112 (_GLIBCXX20_ONLY): Define macro.
2113 (forward_list::remove, forward_list::unique): Use typedef and macro
2114 to change return type and add abi-tag for C++2a. Return number of
2115 removed elements for C++2a.
2116 (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
2117 typedef to change return type for C++2a. Return number of removed
2119 * include/debug/list (list::__remove_return_type): Define typedef as
2120 size_type or void, according to __cplusplus value.
2121 (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
2122 empty, according to __cplusplus value.
2123 (_GLIBCXX20_ONLY): Define macro.
2124 (list::remove, list::unique): Use typedef and macro to change return
2125 type and add abi-tag for C++2a. Return number of removed elements for
2127 (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use typedef
2128 to change return type for C++2a. Return number of removed elements for
2131 2018-08-21 David Edelsohn <dje.gcc@gmail.com>
2133 * testsuite/18_support/new_nothrow.cc: XFAIL on AIX.
2135 2018-08-21 Jonathan Wakely <jwakely@redhat.com>
2137 * testsuite/26_numerics/bit/bitops.count/countl_one.cc: Remove
2138 redundant dg-do directive.
2139 * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
2140 * testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
2141 * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
2142 * testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.
2144 2018-08-20 Jonathan Wakely <jwakely@redhat.com>
2147 * include/std/tuple (_Tuple_impl::operator=): Define as deleted.
2148 (_Tuple_impl::_M_assign): New functions to perform assignment instead
2149 of assignment operators.
2150 (_Tuple_impl::_M_swap): Remove exception specification.
2151 (_Tuple_impl<_Idx, _Head>): Likewise.
2152 (_TC::_NonNestedTuple, _TC::_NotSameTuple): Use __remove_cvref_t.
2153 (__tuple_base): Remove.
2154 (tuple, tuple<_T1, _T2>): Remove inheritance from __tuple_base.
2155 (tuple::operator=, tuple<_T1, _T2>::operator=): Call _M_assign.
2156 (tuple::swap, tuple<_T1, _T2>::swap): Define exception specification
2157 using __is_nothrow_swappable.
2158 (tuple<_T1, _T2>::tuple(_U1&&, _U2&&)): Use __remove_cvref_t.
2160 * include/std/optional (_Optional_payload): Use variable templates
2161 for conditions in default template arguments and exception
2163 (optional): Likewise. Adjust indentation.
2164 (optional::__not_self, optional::__not_tag, optional::_Requires): New
2166 (optional::optional): Use new helpers in constructor constraints.
2167 * include/std/type_traits (__or_v, __and_v): New variable templates.
2168 * testsuite/20_util/optional/cons/value_neg.cc: Change dg-error to
2169 dg-prune-output. Remove unused header.
2171 2018-08-18 François Dumont <fdumont@gcc.gnu.org>
2173 * testsuite/25_algorithms/copy/86658.cc: Use dg-options to define
2176 2018-08-17 Jonathan Wakely <jwakely@redhat.com>
2179 * include/std/tuple (__tuple_base): New class template with deleted
2180 copy assignment operator.
2181 (tuple, tuple<_T1, _T2>): Derive from __tuple_base<tuple> so that
2182 implicit copy/move assignment operator will be deleted/suppressed.
2183 (tuple::__assignable, tuple<_T1, _T2>::__assignable): New helper
2184 functions for SFINAE constraints on assignment operators.
2185 (tuple::__nothrow_assignable, tuple<_T1, _T2>::__nothrow_assignable):
2186 New helper functions for exception specifications.
2187 (tuple::operator=(const tuple&), tuple::operator=(tuple&&))
2188 (tuple<_T1, _T2>::operator=(const tuple&))
2189 (tuple<_T1, _T2>::operator=(tuple&&)): Change parameter types to
2190 __nonesuch_no_braces when the operator should be defined implicitly.
2191 Use __nothrow_assignable for exception specifications.
2192 (tuple::operator=(const tuple<_UElements...>&))
2193 (tuple::operator=(tuple<_UElements...>&&))
2194 (tuple<_T1, _T2>::operator=(const tuple<_U1, _U2>&))
2195 (tuple<_T1, _T2>::operator=(tuple<_U1, _U2>&&))
2196 (tuple<_T1, _T2>::operator=(const pair<_U1, _U2>&))
2197 (tuple<_T1, _T2>::operator=(pair<_U1, _U2>&&)): Constrain using
2198 __assignable and use __nothrow_assignable for exception
2200 * python/libstdcxx/v6/printers.py (is_specialization_of): Accept
2201 gdb.Type as first argument, instead of a string.
2202 (StdTuplePrinter._iterator._is_nonempty_tuple): New method to check
2203 tuple for expected structure.
2204 (StdTuplePrinter._iterator.__init__): Use _is_nonempty_tuple.
2205 * testsuite/20_util/tuple/dr2729.cc: New test.
2206 * testsuite/20_util/tuple/element_access/get_neg.cc: Change dg-error
2209 2018-08-16 Jonathan Wakely <jwakely@redhat.com>
2211 * include/tr1/legendre_function.tcc (__sph_legendre): Avoid warning
2212 about signed/unsigned comparison.
2214 * include/std/ostream (basic_ostream::sentry::~sentry): Suppress
2215 deprecation warnings for using uncaught_exception().
2218 * src/c++11/cow-stdexcept.cc [_GLIBCXX_FULLY_DYNAMIC_STRING]
2219 (logic_error::logic_error(logic_error&&))
2220 (logic_error::operator=(logic_error&&))
2221 (runtime_error::runtime_error(runtime_error&&))
2222 (runtime_error::operator=(runtime_error&&)): Copy strings instead of
2223 moving, to avoid allocating empty reps for moved-from strings.
2225 2018-08-15 Jonathan Wakely <jwakely@redhat.com>
2227 * include/experimental/regex: Remove begin/end macros for namespace.
2228 * include/experimental/string: Likewise.
2229 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc:
2231 * testsuite/experimental/polymorphic_allocator/
2232 pmr_typedefs_forward_list.cc: New test.
2233 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc:
2235 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc:
2237 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
2239 * testsuite/experimental/polymorphic_allocator/
2240 pmr_typedefs_multimap.cc: New test.
2241 * testsuite/experimental/polymorphic_allocator/
2242 pmr_typedefs_multiset.cc: New test.
2243 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc:
2245 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
2247 * testsuite/experimental/polymorphic_allocator/
2248 pmr_typedefs_unordered_map.cc: New test.
2249 * testsuite/experimental/polymorphic_allocator/
2250 pmr_typedefs_unordered_multimap.cc: New test.
2251 * testsuite/experimental/polymorphic_allocator/
2252 pmr_typedefs_unordered_multiset.cc: New test.
2253 * testsuite/experimental/polymorphic_allocator/
2254 pmr_typedefs_unordered_set.cc: New test.
2255 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc:
2258 * include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
2259 calls to __uses_allocator_construct_impl and __use_alloc.
2260 * include/experimental/memory_resource
2261 (polymorphic_allocator::_M_construct): Remove.
2262 (polymorphic_allocator::construct): Call __uses_allocator_construct.
2263 Qualify calls to __use_alloc.
2264 * include/std/memory_resource (polymorphic_allocator::construct): Fix
2265 type in SFINAE constraint. Use constexpr if instead of tag dispatching
2266 to _S_construct overloads.
2267 (polymorphic_allocator::construct(pair<T1, T2>*, ...)): Fix order of
2268 arguments to _S_construct_p.
2269 (polymorphic_allocator::_S_construct): Remove.
2270 (polymorphic_allocator::_S_construct_p): Return allocators by value
2272 * include/std/scoped_allocator (scoped_allocator_adaptor::construct):
2273 Qualify calls to __use_alloc.
2274 * testsuite/20_util/polymorphic_allocator/construct_pair.cc: New test,
2275 copied from testsuite/20_util/scoped_allocator/construct_pair.cc.
2276 * testsuite/experimental/polymorphic_allocator/1.cc: New test.
2277 * testsuite/experimental/polymorphic_allocator/construct_pair.cc:
2280 * src/c++17/memory_resource.cc [!_GLIBCXX_HAS_GTHREADS]
2281 (atomic_mem_res): Add unsynchronized definition for single-threaded.
2283 2018-08-14 Jonathan Wakely <jwakely@redhat.com>
2286 * include/bits/stl_tempbuf.h (return_temporary_buffer): Use
2287 non-placement delete.
2289 * include/std/chrono (__check_overflow): Simplify definition.
2290 (_Checked_integral_constant): Remove.
2293 * src/c++17/default_resource.h: New file, defining default_res.
2294 * src/c++17/memory_resource.cc [ATOMIC_POINTER_LOCK_FREE != 2]
2295 (atomic_mem_res): Define alternative for atomic<memory_resource*>
2296 using a mutex instead of atomics.
2299 * config/abi/pre/gnu.ver: Export new symbol.
2300 * doc/xml/manual/abi.xml: Document new versions.
2301 * include/bits/fstream.tcc (basic_filebuf<C, T>::underflow)
2302 (basic_filebuf<C, T>::xsgetn): Pass errno to __throw_ios_failure.
2303 * include/bits/functexcept.h (__throw_ios_failure(const char*, int)):
2304 Declare new overload.
2305 * src/c++11/cxx11-ios_failure.cc (__ios_failure): Add new constructor
2306 and static member function.
2307 (__throw_ios_failure(const char*, int)): Define.
2308 * src/c++98/ios_failure.cc [!_GLIBCXX_USE_DUAL_ABI]
2309 (__throw_ios_failure(const char*, int)): Define.
2311 2018-08-14 Jeremy Sawicki <jeremy-gcc@sawicki.us>
2313 * include/ext/rope (_Rope_iterator_base(const _Rope_iterator_base&))
2314 (_Rope_const_iterator::operator=(const _Rope_const_iterator&))
2315 (_Rope_iterator::operator=(const _Rope_iterator&)): Ensure
2316 copied/assigned rope iterators don't retain pointers to the iterator
2317 they were copied/assigned from.
2318 * testsuite/ext/rope/7.cc: New.
2320 2018-08-13 Jonathan Wakely <jwakely@redhat.com>
2323 * include/bits/stl_tree.h (_Rb_tree::_M_destroy_node(_Link_type)):
2324 Combine definitions to avoid --detect-odr-violations warning.
2326 * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Use
2327 __is_pow2 to check for valid alignment. Avoid branching when rounding
2328 size to multiple of alignment.
2330 * include/Makefile.am: Install <bit> and <version> for freestanding.
2331 * include/Makefile.in: Regenerate.
2332 * testsuite/17_intro/freestanding.cc: Check for <bit> and <version>.
2335 2018-08-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
2338 * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
2340 * configure: Regenerate.
2342 2018-08-10 Jonathan Wakely <jwakely@redhat.com>
2345 * doc/xml/manual/intro.xml: Document LWG 206 change.
2346 * libsupc++/del_op.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
2347 * libsupc++/del_opa.cc: Likewise.
2348 * libsupc++/del_opant.cc: Likewise.
2349 * libsupc++/del_opnt.cc: Likewise. Call operator delete(ptr) instead
2351 * libsupc++/del_ops.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
2352 * libsupc++/del_opsa.cc: Likewise.
2353 * libsupc++/del_opva.cc: Likewise.
2354 * libsupc++/del_opvant.cc: Likewise.
2355 * libsupc++/del_opvnt.cc: Likewise. Call operator delete[](ptr)
2356 instead of operator delete(ptr).
2357 * libsupc++/del_opvs.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
2358 * libsupc++/del_opvsa.cc: Likewise.
2359 * libsupc++/new_op.cc: Use __builtin_expect in check for zero size.
2360 * libsupc++/new_opa.cc: Use nullptr instead of literal 0.
2361 * libsupc++/new_opant.cc: Likewise. Replace _GLIBCXX_USE_NOEXCEPT
2363 * libsupc++/new_opnt.cc: Likewise. Call operator new(sz) instead of
2365 * libsupc++/new_opvant.cc: Use nullptr and noexcept.
2366 * libsupc++/new_opvnt.cc: Likewise. Call operator new[](sz) instead of
2367 operator new(sz, nothrow).
2368 * testsuite/18_support/new_nothrow.cc: New test.
2370 2018-08-10 Martin Liska <mliska@suse.cz>
2372 * libsupc++/new_op.cc (new): Remove __builtin_expect as malloc
2373 predictor can handle that.
2374 * libsupc++/new_opa.cc: Likewise.
2375 * libsupc++/new_opnt.cc (new): Likewise.
2377 2018-08-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
2380 * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
2382 * configure: Regenerate.
2384 2018-08-10 Jonathan Wakely <jwakely@redhat.com>
2386 * include/std/deque (std::pmr::deque): Declare alias.
2387 * include/std/forward_list (std::pmr::forward_list): Likewise.
2388 * include/std/list (std::pmr::list): Likewise.
2389 * include/std/map (std::pmr::map, std::pmr::multimap): Likewise.
2390 * include/std/regex (std::pmr::match_results, std::pmr::cmatch)
2391 (std::pmr::smatch, std::pmr::wcmatch, std::pmr::wsmatch): Likewise.
2392 * include/std/set (std::pmr::set, std::pmr::multiset): Likewise.
2393 * include/std/string (std::pmr::basic_string, std::pmr::string)
2394 (std::pmr::u16string, std::pmr::u32string, std::pmr::wstring):
2396 * include/std/unordered_map (std::pmr::unordered_map)
2397 (std::pmr::unordered_multimap): Likewise.
2398 * include/std/unordered_set (std::pmr::unordered_set)
2399 (std::pmr::unordered_multiset): Likewise.
2400 * include/std/vector (std::pmr::vector): Likewise.
2401 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: New test.
2402 * testsuite/23_containers/deque/types/pmr_typedefs.cc: New test.
2403 * testsuite/23_containers/forward_list/pmr_typedefs.cc: New test.
2404 * testsuite/23_containers/list/pmr_typedefs.cc: New test.
2405 * testsuite/23_containers/map/pmr_typedefs.cc: New test.
2406 * testsuite/23_containers/multimap/pmr_typedefs.cc: New test.
2407 * testsuite/23_containers/multiset/pmr_typedefs.cc: New test.
2408 * testsuite/23_containers/set/pmr_typedefs.cc: New test.
2409 * testsuite/23_containers/unordered_map/pmr_typedefs.cc: New test.
2410 * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc: New
2412 * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc: New
2414 * testsuite/23_containers/unordered_set/pmr_typedefs.cc: New test.
2415 * testsuite/23_containers/vector/pmr_typedefs.cc: New test.
2416 * testsuite/28_regex/match_results/pmr_typedefs.cc: New test.
2418 2018-08-08 François Dumont <fdumont@gcc.gnu.org>
2420 * include/bits/stl_algo.h
2421 (__rotate(_Ite, _Ite, _Ite, forward_iterator_tag))
2422 (__rotate(_Ite, _Ite, _Ite, bidirectional_iterator_tag))
2423 (__rotate(_Ite, _Ite, _Ite, random_access_iterator_tag)): Move code
2425 (rotate(_Ite, _Ite, _Ite)): ...here.
2426 (__stable_partition_adaptive(_FIt, _FIt, _Pred, _Dist, _Pointer, _Dist)):
2427 Simplify rotate call.
2428 (__rotate_adaptive(_BIt1, _BIt1, _BIt1, _Dist, _Dist, _Bit2, _Dist)):
2430 (__merge_without_buffer(_BIt, _BIt, _BIt, _Dist, _Dist, _Comp)):
2433 2018-08-08 Jonathan Wakely <jwakely@redhat.com>
2435 * libsupc++/new_opa.cc (aligned_alloc): Declare inside namespace to
2436 avoid clashing with an ::aligned_alloc function that was not detected
2439 * doc/xml/manual/using.xml: Fix markup for empty table entry.
2440 * doc/html/*: Regenerate.
2442 * doc/xml/manual/using.xml: Add missing header to table and fix typo.
2443 * doc/html/*: Regenerate.
2446 * include/bits/fs_dir.h (directory_entry::_M_file_type(error_code&)):
2447 Clear error_code when cached type is used.
2448 * testsuite/27_io/filesystem/directory_entry/86597.cc: New test.
2450 2018-08-07 Jonathan Wakely <jwakely@redhat.com>
2453 * include/std/variant (_Copy_ctor_base::_M_destructive_move): Define
2454 here instead of in _Move_assign_base.
2455 (_Copy_ctor_base<true, _Types...>::_M_destructive_move): Define.
2456 (_Copy_assign_base::operator=): Use _M_destructive_move when changing
2457 the contained value to another alternative.
2458 (_Move_assign_base::operator=): Likewise.
2459 (_Move_assign_base::_M_destructive_move): Remove.
2460 * testsuite/20_util/variant/86874.cc: New test.
2463 * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] (aligned_alloc):
2464 Replace macro with inline function.
2465 [__sun]: Increase alignment to meet memalign precondition.
2466 [!HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN]
2467 (aligned_alloc): Move check for valid alignment to operator new.
2468 Remove redundant check for non-zero size, it's enforced by the caller.
2469 (operator new): Move check for valid alignment here. Use
2470 __builtin_expect on check for zero size.
2472 * config/abi/pre/gnu.ver: Export monotonic_buffer_resource members.
2473 * include/std/memory_resource (monotonic_buffer_resource::release):
2474 Call _M_release_buffers to free buffers.
2475 (monotonic_buffer_resource::do_allocate): Call _M_new_buffer to
2476 allocate a new buffer from upstream.
2477 (monotonic_buffer_resource::_M_new_buffer): Declare.
2478 (monotonic_buffer_resource::_M_release_buffers): Declare.
2479 (monotonic_buffer_resource::_Chunk): Replace definition with
2480 declaration as opaque type.
2481 * src/c++17/memory_resource.cc (monotonic_buffer_resource::_Chunk):
2483 (monotonic_buffer_resource::_M_new_buffer): Define.
2484 (monotonic_buffer_resource::_M_release_buffers): Define.
2486 2018-08-05 François Dumont <fdumont@gcc.gnu.org>
2488 * include/bits/stl_iterator.h: Fix comment.
2490 2018-08-03 Jonathan Wakely <jwakely@redhat.com>
2492 * src/c++11/system_error.cc
2493 (system_error_category::default_error_condition): Add workaround for
2494 ENOTEMPTY and EEXIST having the same value on AIX.
2495 * testsuite/19_diagnostics/error_category/system_category.cc: Add
2496 extra testcases for EDOM, EILSEQ, ERANGE, EEXIST and ENOTEMPTY.
2498 2018-08-01 Jonathan Wakely <jwakely@redhat.com>
2500 * configure: Regenerate.
2501 * configure.ac: Add -D_GLIBCXX_ASSERTIONS to default DEBUG_FLAGS.
2502 * src/c++11/futex.cc: Use __glibcxx_assert instead of
2503 _GLIBCXX_DEBUG_ASSERT.
2505 2018-08-01 Mike Crowe <mac@mcrowe.com>
2507 * include/std/condition_variable (wait_for): Use steady_clock.
2509 2018-08-01 Mike Crowe <mac@mcrowe.com>
2511 * include/std/condition_variable (wait_until): Only report timeout
2512 if we really have timed out when measured against the
2513 caller-supplied clock.
2514 * testsuite/30_threads/condition_variable/members/2.cc: Add test
2515 case to confirm above behaviour.
2517 2018-08-01 Jonathan Wakely <jwakely@redhat.com>
2520 * src/c++11/system_error.cc
2521 (system_error_category::default_error_condition): New override to
2522 check for POSIX errno values.
2523 * testsuite/19_diagnostics/error_category/generic_category.cc: New
2524 * testsuite/19_diagnostics/error_category/system_category.cc: New
2527 2018-07-31 Jonathan Wakely <jwakely@redhat.com>
2530 * include/bits/stl_pair.h (__pair_base): New class with deleted copy
2531 assignment operator.
2532 (pair): Derive from __pair_base.
2533 (pair::operator=): Remove deleted overload.
2534 * python/libstdcxx/v6/printers.py (StdPairPrinter): New pretty printer
2535 so that new base class isn't shown in GDB.
2536 * testsuite/20_util/pair/86751.cc: New test.
2537 * testsuite/20_util/pair/ref_assign.cc: New test.
2539 * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
2540 (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Move definitions here.
2541 (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Likewise. Use !__is_identifier
2542 instead of __has_builtin.
2543 * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
2544 (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Remove definitions from here.
2545 * include/std/version [!_GLIBCXX_HAS_GTHREADS]
2546 (__cpp_lib_shared_timed_mutex, __cpp_lib_scoped_lock)
2547 (__cpp_lib_shared_mutex): Don't define when Gthreads not in use.
2548 [!_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP]
2549 (__cpp_lib_has_unique_object_representations): Don't define when
2550 builtin not available.
2551 [!_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE] (__cpp_lib_is_aggregate):
2553 [!_GLIBCXX_HAVE_BUILTIN_LAUNDER] (__cpp_lib_launder): Likewise.
2554 * libsupc++/new (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Remove definition
2557 * doc/xml/manual/test.xml: Improve documentation on writing tests for
2559 * doc/xml/manual/using.xml: Document all headers for C++11 and later.
2560 * doc/html/*: Regenerate.
2562 * include/ext/pointer.h [__cplusplus >= 201103L]
2563 (_Pointer_adapter::operator bool): Add explicit conversion operator
2564 to replace safe bool idiom.
2566 2018-07-30 Jonathan Wakely <jwakely@redhat.com>
2569 * include/bits/stl_iterator.h (reverse_iterator::operator->): Call
2570 _S_to_pointer (LWG 1052, LWG 2118).
2571 (reverse_iterator::_S_to_pointer): Define overloaded helper functions.
2572 * testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
2573 * testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.
2575 * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
2576 workaround for aligned_alloc bug on AIX.
2577 * testsuite/18_support/new_aligned.cc: New test.
2579 2018-07-26 Marek Polacek <polacek@redhat.com>
2581 * testsuite/30_threads/condition_variable_any/cond.cc: New.
2583 2018-07-26 Marek Polacek <polacek@redhat.com>
2585 * src/c++98/locale_init.cc: Fix #ifdef condition.
2587 2018-07-26 Jonathan Wakely <jwakely@redhat.com>
2589 * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add
2590 dg-require-cstdint directive.
2591 * testsuite/20_util/allocator/overaligned.cc: Likewise.
2592 * testsuite/20_util/any/cons/aligned.cc: Likewise.
2593 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise.
2594 * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise.
2595 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
2597 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
2598 * testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
2599 * testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
2600 * testsuite/25_algorithms/make_heap/complexity.cc: Likewise.
2601 * testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and
2602 random_device effective-target.
2603 * testsuite/25_algorithms/push_heap/complexity.cc: Likewise.
2604 * testsuite/25_algorithms/sample/1.cc: Require cstdint.
2605 * testsuite/25_algorithms/sample/2.cc: Likewise.
2606 * testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint
2608 * testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
2610 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
2612 * testsuite/26_numerics/random/discard_block_engine/requirements/
2613 constexpr_data.cc: Likewise.
2614 * testsuite/26_numerics/random/discard_block_engine/requirements/
2615 constexpr_functions.cc: Likewise.
2616 * testsuite/26_numerics/random/independent_bits_engine/requirements/
2617 constexpr_functions.cc: Likewise.
2618 * testsuite/26_numerics/random/linear_congruential_engine/requirements/
2619 constexpr_data.cc: Likewise.
2620 * testsuite/26_numerics/random/linear_congruential_engine/requirements/
2621 constexpr_functions.cc: Likewise.
2622 * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
2623 constexpr_data.cc: Likewise.
2624 * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
2625 constexpr_functions.cc: Likewise.
2626 * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
2627 * testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise.
2628 * testsuite/26_numerics/random/shuffle_order_engine/requirements/
2629 constexpr_data.cc: Add dg-require-cstdint directive.
2630 * testsuite/26_numerics/random/shuffle_order_engine/requirements/
2631 constexpr_functions.cc: Likewise.
2632 * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
2633 constexpr_data.cc: Likewise.
2634 * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
2635 constexpr_functions.cc: Likewise.
2636 * testsuite/26_numerics/random/uniform_real_distribution/operators/
2638 * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise.
2639 * testsuite/experimental/algorithm/sample-2.cc: Likewise.
2640 * testsuite/experimental/algorithm/sample.cc: Likewise.
2641 * testsuite/experimental/algorithm/search.cc: Likewise.
2642 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
2643 * testsuite/experimental/any/cons/aligned.cc: Likewise.
2644 * testsuite/experimental/memory_resource/new_delete_resource.cc:
2646 * testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise.
2647 * testsuite/experimental/random/randint.cc: Likewise.
2648 * testsuite/experimental/source_location/1.cc: Likewise.
2649 * testsuite/ext/bitmap_allocator/overaligned.cc: Likewise.
2650 * testsuite/ext/malloc_allocator/overaligned.cc: Likewise.
2651 * testsuite/ext/mt_allocator/overaligned.cc: Likewise.
2652 * testsuite/ext/new_allocator/overaligned.cc: Likewise.
2653 * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
2654 * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
2655 * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
2656 * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
2657 * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
2658 * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
2659 * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
2660 * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
2661 * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
2662 * testsuite/ext/pool_allocator/overaligned.cc: Likewise.
2663 * testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
2664 * testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
2665 * testsuite/ext/throw_allocator/check_delete.cc: Likewise.
2666 * testsuite/ext/throw_allocator/check_new.cc: Likewise.
2667 * testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
2668 * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
2669 * testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
2670 * testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
2671 * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
2673 * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
2674 * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
2675 * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
2676 * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
2678 * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
2679 * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
2680 * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
2682 * testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
2684 * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
2686 * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
2687 * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
2688 * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
2689 * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
2690 * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
2691 * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
2693 * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
2695 * testsuite/30_threads/recursive_timed_mutex/dest/
2696 destructor_locked.cc: Likewise.
2697 * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
2698 * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
2699 * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
2701 * testsuite/30_threads/recursive_timed_mutex/native_handle/
2702 typesizes.cc: Likewise.
2703 * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
2705 * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
2707 * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
2709 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
2711 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
2713 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
2715 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
2717 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
2719 * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
2720 * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
2721 * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
2722 * testsuite/30_threads/scoped_lock/requirements/
2723 explicit_instantiation.cc: Likewise.
2724 * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
2725 * testsuite/30_threads/shared_future/cons/assign.cc: Likewise.
2726 * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
2727 * testsuite/30_threads/shared_future/cons/copy.cc: Likewise.
2728 * testsuite/30_threads/shared_future/cons/default.cc: Likewise.
2729 * testsuite/30_threads/shared_future/cons/move.cc: Likewise.
2730 * testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise.
2731 * testsuite/30_threads/shared_future/members/45133.cc: Likewise.
2732 * testsuite/30_threads/shared_future/members/get.cc: Likewise.
2733 * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
2734 * testsuite/30_threads/shared_future/members/valid.cc: Likewise.
2735 * testsuite/30_threads/shared_future/members/wait.cc: Likewise.
2736 * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
2737 * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
2738 * testsuite/30_threads/shared_future/requirements/
2739 explicit_instantiation.cc: Likewise.
2740 * testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
2741 * testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
2742 * testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
2743 * testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
2744 * testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
2745 * testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
2746 * testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
2747 * testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
2748 * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
2749 * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
2750 * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
2751 * testsuite/30_threads/shared_lock/requirements/
2752 explicit_instantiation.cc: Likewise.
2753 * testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise.
2754 * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
2755 * testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise.
2756 * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
2757 * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
2759 * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
2760 * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
2761 * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
2762 * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
2763 * testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc: Likewise.
2764 * testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc: Likewise.
2765 * testsuite/30_threads/shared_timed_mutex/requirements/
2766 standard_layout.cc: Likewise.
2767 * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
2768 * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
2769 * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
2770 * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
2771 * testsuite/30_threads/this_thread/1.cc: Likewise.
2772 * testsuite/30_threads/this_thread/2.cc: Likewise.
2773 * testsuite/30_threads/this_thread/3.cc: Likewise.
2774 * testsuite/30_threads/this_thread/4.cc: Likewise.
2775 * testsuite/30_threads/this_thread/58038.cc: Likewise.
2776 * testsuite/30_threads/thread/70503.cc: Likewise.
2777 * testsuite/30_threads/thread/84532.cc: Likewise.
2778 * testsuite/30_threads/thread/adl.cc: Likewise.
2779 * testsuite/30_threads/thread/cons/1.cc: Likewise.
2780 * testsuite/30_threads/thread/cons/2.cc: Likewise.
2781 * testsuite/30_threads/thread/cons/3.cc: Likewise.
2782 * testsuite/30_threads/thread/cons/4.cc: Likewise.
2783 * testsuite/30_threads/thread/cons/49668.cc: Likewise.
2784 * testsuite/30_threads/thread/cons/5.cc: Likewise.
2785 * testsuite/30_threads/thread/cons/6.cc: Likewise.
2786 * testsuite/30_threads/thread/cons/7.cc: Likewise.
2787 * testsuite/30_threads/thread/cons/8.cc: Likewise.
2788 * testsuite/30_threads/thread/cons/84535.cc: Likewise.
2789 * testsuite/30_threads/thread/cons/9.cc: Likewise.
2790 * testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
2791 * testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
2792 * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
2793 * testsuite/30_threads/thread/cons/moveable.cc: Likewise.
2794 * testsuite/30_threads/thread/cons/terminate.cc: Likewise.
2795 * testsuite/30_threads/thread/id/operators.cc: Likewise.
2796 * testsuite/30_threads/thread/members/1.cc: Likewise.
2797 * testsuite/30_threads/thread/members/2.cc: Likewise.
2798 * testsuite/30_threads/thread/members/3.cc: Likewise.
2799 * testsuite/30_threads/thread/members/4.cc: Likewise.
2800 * testsuite/30_threads/thread/members/5.cc: Likewise.
2801 * testsuite/30_threads/thread/members/hardware_concurrency.cc:
2803 * testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
2804 * testsuite/30_threads/thread/swap/1.cc: Likewise.
2805 * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
2806 * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
2807 * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
2808 * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
2809 * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
2810 * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
2811 * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
2813 * testsuite/30_threads/timed_mutex/requirements/
2814 standard_layout.cc: Likewise.
2815 * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
2816 * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
2817 * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
2818 * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
2819 * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
2820 * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
2821 * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
2822 * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
2823 * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
2824 * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
2825 * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
2826 * testsuite/30_threads/try_lock/1.cc: Likewise.
2827 * testsuite/30_threads/try_lock/2.cc: Likewise.
2828 * testsuite/30_threads/try_lock/3.cc: Likewise.
2829 * testsuite/30_threads/try_lock/4.cc: Likewise.
2830 * testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
2831 * testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
2832 * testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
2833 * testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
2834 * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
2835 * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
2836 * testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
2837 * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
2838 * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
2839 * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
2840 * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
2841 * testsuite/30_threads/unique_lock/requirements/
2842 explicit_instantiation.cc: Likewise.
2843 * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.
2845 * testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint
2847 * testsuite/30_threads/async/49668.cc: Likewise.
2848 * testsuite/30_threads/async/54297.cc: Likewise.
2849 * testsuite/30_threads/async/84532.cc: Likewise.
2850 * testsuite/30_threads/async/any.cc: Likewise.
2851 * testsuite/30_threads/async/async.cc: Likewise.
2852 * testsuite/30_threads/async/except.cc: Likewise.
2853 * testsuite/30_threads/async/forced_unwind.cc: Likewise.
2854 * testsuite/30_threads/async/launch.cc: Likewise.
2855 * testsuite/30_threads/async/lwg2021.cc: Likewise.
2856 * testsuite/30_threads/async/sync.cc: Likewise.
2857 * testsuite/30_threads/call_once/39909.cc: Likewise.
2858 * testsuite/30_threads/call_once/49668.cc: Likewise.
2859 * testsuite/30_threads/call_once/60497.cc: Likewise.
2860 * testsuite/30_threads/call_once/call_once1.cc: Likewise.
2861 * testsuite/30_threads/call_once/constexpr.cc: Likewise.
2862 * testsuite/30_threads/call_once/dr2442.cc: Likewise.
2863 * testsuite/30_threads/call_once/once_flag.cc: Likewise.
2864 * testsuite/30_threads/condition_variable/54185.cc: Likewise.
2865 * testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
2866 * testsuite/30_threads/condition_variable/cons/assign_neg.cc:
2868 * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
2869 * testsuite/30_threads/condition_variable/members/1.cc: Likewise.
2870 * testsuite/30_threads/condition_variable/members/2.cc: Likewise.
2871 * testsuite/30_threads/condition_variable/members/3.cc: Likewise.
2872 * testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
2873 * testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
2874 * testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
2876 * testsuite/30_threads/condition_variable/requirements/
2877 standard_layout.cc: Likewise.
2878 * testsuite/30_threads/condition_variable/requirements/typedefs.cc:
2880 * testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
2881 * testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
2882 * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
2883 * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
2885 * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
2887 * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
2888 * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
2889 * testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
2890 * testsuite/30_threads/future/cons/constexpr.cc: Likewise.
2891 * testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
2892 * testsuite/30_threads/future/cons/default.cc: Likewise.
2893 * testsuite/30_threads/future/cons/move.cc: Likewise.
2894 * testsuite/30_threads/future/cons/move_assign.cc: Likewise.
2895 * testsuite/30_threads/future/members/45133.cc: Likewise.
2896 * testsuite/30_threads/future/members/get.cc: Likewise.
2897 * testsuite/30_threads/future/members/get2.cc: Likewise.
2898 * testsuite/30_threads/future/members/share.cc: Likewise.
2899 * testsuite/30_threads/future/members/valid.cc: Likewise.
2900 * testsuite/30_threads/future/members/wait.cc: Likewise.
2901 * testsuite/30_threads/future/members/wait_for.cc: Likewise.
2902 * testsuite/30_threads/future/members/wait_until.cc: Likewise.
2903 * testsuite/30_threads/future/requirements/explicit_instantiation.cc:
2905 * testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
2907 * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
2908 * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
2909 * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
2910 * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
2911 * testsuite/30_threads/lock/1.cc: Likewise.
2912 * testsuite/30_threads/lock/2.cc: Likewise.
2913 * testsuite/30_threads/lock/3.cc: Likewise.
2914 * testsuite/30_threads/lock/4.cc: Likewise.
2915 * testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
2916 * testsuite/30_threads/lock_guard/requirements/
2917 explicit_instantiation.cc: Likewise.
2918 * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
2919 * testsuite/30_threads/mutex/cons/1.cc: Likewise.
2920 * testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
2921 * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
2922 * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
2923 * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
2924 * testsuite/30_threads/mutex/lock/1.cc: Likewise.
2925 * testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
2926 * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
2927 * testsuite/30_threads/mutex/requirements/standard_layout.cc::
2929 * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
2930 * testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
2931 * testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
2932 * testsuite/30_threads/mutex/unlock/1.cc: Likewise.
2933 * testsuite/30_threads/mutex/unlock/2.cc: Likewise.
2934 * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
2935 * testsuite/30_threads/packaged_task/49668.cc: Likewise.
2936 * testsuite/30_threads/packaged_task/60564.cc: Likewise.
2937 * testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
2938 * testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
2939 * testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
2940 * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
2941 * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
2942 * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
2943 * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
2944 * testsuite/30_threads/packaged_task/cons/assign_neg.cc: Likewise.
2945 * testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
2946 * testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
2947 * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
2948 * testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
2950 * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
2951 * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
2952 * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
2953 * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
2954 * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
2955 * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
2956 * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
2957 * testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
2958 * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
2959 * testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
2960 * testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
2961 * testsuite/30_threads/packaged_task/requirements/
2962 explicit_instantiation.cc: Likewise.
2963 * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
2964 * testsuite/30_threads/promise/60966.cc: Likewise.
2965 * testsuite/30_threads/promise/69106.cc: Likewise.
2966 * testsuite/30_threads/promise/cons/1.cc: Likewise.
2967 * testsuite/30_threads/promise/cons/alloc.cc: Likewise.
2968 * testsuite/30_threads/promise/cons/alloc2.cc: Likewise.
2969 * testsuite/30_threads/promise/cons/alloc_min.cc: Likewise.
2970 * testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
2971 * testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
2972 * testsuite/30_threads/promise/cons/move.cc: Likewise.
2973 * testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
2974 * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
2975 * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
2976 * testsuite/30_threads/promise/members/get_future.cc: Likewise.
2977 * testsuite/30_threads/promise/members/get_future2.cc: Likewise.
2978 * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
2979 * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
2980 * testsuite/30_threads/promise/members/set_value.cc: Likewise.
2981 * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
2982 * testsuite/30_threads/promise/members/set_value3.cc: Likewise.
2983 * testsuite/30_threads/promise/members/swap.cc: Likewise.
2984 * testsuite/30_threads/promise/requirements/explicit_instantiation.cc:
2986 * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
2988 * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
2990 * testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive.
2991 * testsuite/20_util/duration/arithmetic/1.cc: Likewise.
2992 * testsuite/20_util/duration/arithmetic/2.cc: Likewise.
2993 * testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise.
2994 * testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise.
2995 * testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
2996 * testsuite/20_util/duration/comparison_operators/1.cc: Likewise.
2997 * testsuite/20_util/duration/cons/1.cc: Likewise.
2998 * testsuite/20_util/duration/cons/1_neg.cc: Likewise.
2999 * testsuite/20_util/duration/cons/2.cc: Likewise.
3000 * testsuite/20_util/duration/cons/54025.cc: Likewise.
3001 * testsuite/20_util/duration/cons/dr974_neg.cc: Likewise.
3002 * testsuite/20_util/duration/requirements/explicit_instantiation/
3003 explicit_instantiation.cc: Likewise.
3004 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
3005 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
3006 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
3007 * testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise.
3008 * testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
3009 * testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
3010 * testsuite/20_util/ratio/comparisons/comp3.cc: Likewise.
3011 * testsuite/20_util/ratio/cons/cons1.cc: Likewise.
3012 * testsuite/20_util/ratio/operations/45866.cc: Likewise.
3013 * testsuite/20_util/ratio/operations/47913.cc: Likewise.
3014 * testsuite/20_util/ratio/operations/53840.cc: Likewise.
3015 * testsuite/20_util/ratio/operations/ops1.cc: Likewise.
3016 * testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
3017 * testsuite/20_util/system_clock/1.cc: Likewise.
3018 * testsuite/20_util/time_point/1.cc: Likewise.
3019 * testsuite/20_util/time_point/2.cc: Likewise.
3020 * testsuite/20_util/time_point/3.cc: Likewise.
3021 * testsuite/20_util/time_point/requirements/explicit_instantiation/
3022 explicit_instantiation.cc: Likewise.
3023 * testsuite/21_strings/basic_string/requirements/
3024 explicit_instantiation/char16_t/1.cc: Likewise.
3025 * testsuite/21_strings/basic_string/requirements/
3026 explicit_instantiation/char32_t/1.cc: Likewise.
3027 * testsuite/21_strings/basic_string_view/requirements/
3028 explicit_instantiation/char16_t/1.cc: Likewise.
3029 * testsuite/21_strings/basic_string_view/requirements/
3030 explicit_instantiation/char32_t/1.cc: Likewise.
3031 * testsuite/21_strings/char_traits/requirements/
3032 explicit_instantiation/char16_t/1.cc: Likewise.
3033 * testsuite/21_strings/char_traits/requirements/
3034 explicit_instantiation/char32_t/1.cc: Likewise.
3035 * testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
3036 * testsuite/22_locale/codecvt/char16_t.cc: Likewise.
3037 * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
3038 * testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc:
3040 * testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
3042 * testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
3044 * testsuite/22_locale/codecvt/utf8.cc: Likewise.
3045 * testsuite/23_containers/vector/bool/72847.cc: Likewise.
3046 * testsuite/23_containers/vector/debug/multithreaded_swap.cc:
3048 * testsuite/experimental/string_view/requirements/
3049 explicit_instantiation/char16_t/1.cc: Likewise.
3050 * testsuite/experimental/string_view/requirements/
3051 explicit_instantiation/char32_t/1.cc: Likewise.
3052 * testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/
3054 * testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
3057 * include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3058 (random_condition, throw_value_random, throw_allocator_random)
3059 (std::hash<throw_value_random>): Do not define when <tr1/random> is
3061 * src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not
3062 define transactional memory support when <stdint.h> is not usable.
3064 * include/bits/hashtable_policy.h (__detail::__clp2): Use faster
3065 implementation that doesn't depend on <stdint.h> types.
3066 * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use
3067 std::size_t when std::uintptr_t is not usable.
3068 [!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable)
3069 (undeclare_reachable, declare_no_pointers, undeclare_no_pointers):
3070 Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
3072 * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3073 (hash<u16string>, hash<u32string>): Remove dependency on
3074 _GLIBCXX_USE_C99_STDINT_TR1.
3075 * include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3076 (char_traits<char16_t>, char_traits<char32_t>): Remove dependency on
3077 _GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and
3078 __UINT_LEAST32_TYPE__ or make_unsigned when <stdint.h> is not usable.
3079 * include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3080 (codecvt<char16_t, char, mbstate_t>)
3081 (codecvt<char32_t, char, mbstate_t>)
3082 (codecvt_byname<char16_t, char, mbstate_t>)
3083 (codecvt_byname<char32_t, char, mbstate_t>): Remove dependency
3084 on _GLIBCXX_USE_C99_STDINT_TR1.
3085 * include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3086 (_GLIBCXX_NUM_UNICODE_FACETS): Likewise.
3087 * include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3088 (char_traits<char16_t>, char_traits<char32_t>)
3089 (basic_string<char16_t>, basic_string<char32_t>): Remove dependency
3090 on _GLIBCXX_USE_C99_STDINT_TR1.
3091 * include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
3092 (u16string_view, u32string_view, hash<u16string_view>)
3093 (hash<u32string_view>, operator""sv(const char16_t, size_t))
3094 (operator""sv(const char32_t, size_t)): Likewise.
3095 * include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3096 (hash<__u16vstring>, hash<__u32vstring>): Likewise.
3097 * include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3098 (__u16vstring, __u16sso_string, __u16rc_string, __u32vstring)
3099 (__u32sso_string, __u32rc_string): Likewise.
3100 * include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode)
3101 (codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise.
3102 * include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
3103 (u16string_view, u32string_view, hash<u16string_view>)
3104 (hash<u32string_view>, operator""sv(const char16_t, size_t))
3105 (operator""sv(const char32_t, size_t)): Likewise.
3106 * src/c++11/codecvt.cc: Likewise.
3107 * src/c++98/locale_init.cc: Likewise.
3108 * src/c++98/localename.cc: Likewise.
3110 * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3111 (__atomic_futex_unsigned_base): Remove dependency on
3112 _GLIBCXX_USE_C99_STDINT_TR1 macro.
3113 * include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1]
3114 (unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1.
3115 * include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t)
3116 (uintmax_t): Define using predefined macros.
3117 * include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration)
3118 (time_point, system_clock, high_resolution_clock, steady_clock): Remove
3119 dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro.
3120 (nanoseconds, microseconds, milliseconds, seconds, minutes, hours):
3121 [!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or
3122 long long when <stdint.h> is not usable.
3123 * include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1]
3124 (condition_variable, condition_variable_any): Remove dependency on
3125 _GLIBCXX_USE_C99_STDINT_TR1.
3126 * include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise)
3127 (packaged_task, async): Likewise.
3128 * include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex)
3129 (timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock)
3130 (once_flag, call_once): Likewise.
3131 * include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise.
3132 * include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1]
3133 (shared_mutex, shared_timed_mutex, shared_lock): Likewise.
3134 * include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread)
3135 (this_thread::get_id, this_thread::yield, this_thread::sleep_for)
3136 (this_thread::sleep_until): Likewise.
3137 * src/c++11/chrono.cc: Remove dependency on
3138 _GLIBCXX_USE_C99_STDINT_TR1 macro.
3139 * src/c++11/condition_variable.cc: Likewise.
3140 * src/c++11/futex.cc: Likewise.
3141 * src/c++11/future.cc: Likewise.
3142 * src/c++11/mutex.cc: Likewise.
3143 * src/c++11/thread.cc: Likewise.
3144 * testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error.
3145 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
3146 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
3147 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
3148 * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
3149 * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
3151 2018-07-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3154 * testsuite/experimental/memory_resource/new_delete_resource.cc:
3155 xfail execution on 32-bit Solaris/x86.
3157 2018-07-26 Marc Glisse <marc.glisse@inria.fr>
3159 * include/bits/stl_vector.h (_Vector_impl_data::_M_copy_data): New.
3160 (_Vector_impl_data::_M_swap_data): Use _M_copy_data.
3161 (vector::_M_move_assign): Reorder the swaps.
3163 2018-07-26 Jonathan Wakely <jwakely@redhat.com>
3166 * testsuite/20_util/monotonic_buffer_resource/release.cc: Request
3167 same alignment for post-release allocation.
3169 2018-07-25 Jonathan Wakely <jwakely@redhat.com>
3172 * testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
3173 buffer being misaligned and so returned pointer not being at start.
3175 * include/experimental/memory_resource: Include <cstddef> header.
3177 * acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
3178 * src/Makefile.am: Add comment.
3179 * src/c++17/Makefile.in: Regenerate.
3181 * include/Makefile.am: Add new <bits/unique_lock.h> header.
3182 * include/Makefile.in: Regenerate.
3183 * include/bits/std_mutex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (mutex)
3184 (lock_guard): Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
3185 (unique_lock): Move definition to ...
3186 * include/bits/unique_lock.h: New header.
3187 [!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Define unconditionally.
3188 [_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock(mutex_type&, time_point))
3189 (unique_lock(mutex_type&, duration), unique_lock::try_lock_until)
3190 (unique_lock::try_lock_for): Define only when <chrono> is usable.
3191 * include/std/condition_variable: Include <bits/unique_lock.h>.
3192 * include/std/mutex: Likewise.
3194 2018-07-24 Jonathan Wakely <jwakely@redhat.com>
3196 * config/abi/pre/gnu.ver: Export new symbols.
3197 * configure: Regenerate.
3198 * include/Makefile.am: Add new <memory_resource> header.
3199 * include/Makefile.in: Regenerate.
3200 * include/precompiled/stdc++.h: Include <memory_resource> for C++17.
3201 * include/std/memory_resource: New header.
3202 (memory_resource, polymorphic_allocator, new_delete_resource)
3203 (null_memory_resource, set_default_resource, get_default_resource)
3204 (pool_options, monotonic_buffer_resource): Define.
3205 * src/Makefile.am: Add c++17 directory.
3206 * src/Makefile.in: Regenerate.
3207 * src/c++11/Makefile.am: Fix comment.
3208 * src/c++17/Makefile.am: Add makefile for new sub-directory.
3209 * src/c++17/Makefile.in: Generate.
3210 * src/c++17/memory_resource.cc: New.
3211 (newdel_res_t, null_res_t, constant_init, newdel_res, null_res)
3212 (default_res, new_delete_resource, null_memory_resource)
3213 (set_default_resource, get_default_resource): Define.
3214 * testsuite/20_util/memory_resource/1.cc: New test.
3215 * testsuite/20_util/memory_resource/2.cc: New test.
3216 * testsuite/20_util/monotonic_buffer_resource/1.cc: New test.
3217 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test.
3218 * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test.
3219 * testsuite/20_util/monotonic_buffer_resource/release.cc: New test.
3220 * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
3222 * testsuite/20_util/polymorphic_allocator/1.cc: New test.
3223 * testsuite/20_util/polymorphic_allocator/resource.cc: New test.
3224 * testsuite/20_util/polymorphic_allocator/select.cc: New test.
3225 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
3226 Define concrete memory resource for testing.
3227 (__gnu_test::default_resource_mgr): Define RAII helper for changing
3231 * include/bits/stl_algobase.h (__niter_wrap<_Iterator>): Pass unused
3232 parameter by reference, to avoid copying invalid iterators.
3233 * testsuite/25_algorithms/copy/86658.cc: New test.
3235 * include/std/bit (__countl_zero, __countr_zero, __popcount): Use
3236 local variables for number of digits instead of type aliases.
3237 (__log2p1): Remove redundant branch also checked in __countl_zero.
3239 * include/bits/uses_allocator.h (__is_erased_or_convertible): Reorder
3240 conditions. Add comments.
3241 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error line.
3242 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
3243 * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
3245 * include/bits/uses_allocator.h (__is_erased_or_convertible): Remove.
3246 (__uses_allocator_helper): Check conditions directly instead of
3247 using __is_erased_or_convertible.
3249 * include/experimental/memory_resource: Adjust comments and
3251 (__resource_adaptor_imp): Add second template parameter for type of
3252 memory resource base class.
3253 (memory_resource): Define default constructor, destructor, copy
3254 constructor and copy assignment operator as defaulted.
3257 * include/experimental/memory_resource (__get_default_resource): Use
3258 placement new to create an object with dynamic storage duration.
3260 2018-07-23 Jonathan Wakely <jwakely@redhat.com>
3263 * include/experimental/memory_resource
3264 (__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion.
3265 (__resource_adaptor_common::__guaranteed_alignment): New helper to
3266 give maximum alignment an allocator guarantees. Specialize for known
3267 allocators using new and malloc.
3268 (__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment.
3269 (__resource_adaptor_imp::do_deallocate): Likewise.
3270 * testsuite/experimental/memory_resource/new_delete_resource.cc:
3271 Check that new and delete are called with expected sizes.
3273 2018-07-20 Jonathan Wakely <jwakely@redhat.com>
3276 * include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
3279 2018-07-20 Fangrui Song <maskray@google.com>
3281 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
3282 _GLIBCXX_VISIBILITY(default).
3284 2018-07-20 Jonathan Wakely <jwakely@redhat.com>
3287 * include/std/version: Move __cpp_lib_list_remove_return_type macro.
3289 2018-07-19 Jonathan Wakely <jwakely@redhat.com>
3291 * include/std/type_traits (__is_member_object_pointer_helper): Use
3292 __not_<is_function<_Tp>>::type instead of integral_constant.
3293 (__is_member_function_pointer_helper): Likewise for
3294 is_function<_Tp>::type.
3295 (is_compund): Likewise for __not_<is_fundamental<_Tp>>::type.
3296 (__do_is_nt_destructible_impl): Use __bool_constant and reindent.
3297 (is_trivially_constructible): Remove redundant use of
3299 (__is_trivially_copy_assignable_impl): Remove redundant use of
3301 (__is_trivially_move_assignable_impl): Remove redundant use of
3303 (is_trivially_destructible): Use __bool_constant.
3304 * testsuite/20_util/is_trivially_assignable/value.cc: Add some more
3305 tests for scalar types.
3307 2018-07-19 Glen Joseph Fernandes <glenjofe@gmail.com>
3309 * include/bits/stl_algobase.h (__copy_move_a): Used
3310 __is_trivially_copyable.
3311 (__copy_move_backward_a): Likewise.
3312 * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
3315 2018-07-17 Jonathan Wakely <jwakely@redhat.com>
3318 * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Don't define WERROR.
3319 (GLIBCXX_EXPORT_FLAGS): Use -Wabi=2 instead of -Wabi.
3320 * configure: Regenerate.
3321 * configure.ac: Change GLIBCXX_ENABLE_WERROR default to "no".
3322 * doc/Makefile.in: Regenerate.
3323 * fragment.am: Set WERROR_FLAG to -Werror instead of $(WERROR).
3324 * include/Makefile.in: Regenerate.
3325 * libsupc++/Makefile.in: Regenerate.
3326 * po/Makefile.in: Regenerate.
3327 * python/Makefile.in: Regenerate.
3328 * src/Makefile.in: Regenerate.
3329 * src/c++11/Makefile.in: Regenerate.
3330 * src/c++11/debug.cc: Use diagnostic pragmas to suppress warnings
3331 from -Wabi=2 that don't affect exported symbols.
3332 * src/c++98/Makefile.in: Regenerate.
3333 * src/filesystem/Makefile.in: Regenerate.
3334 * testsuite/Makefile.in: Regenerate.
3336 * src/c++11/compatibility-thread-c++0x.cc [_GLIBCXX_SHARED]
3337 (_Async_state_common::_M_join): Simplify use of std::call_once and
3338 corresponding explicit instantiation.
3339 (_Maybe_wrap_member_pointer, _Bind_simple, _Bind_simple_helper)
3340 (__bind_simple): Remove definitions and explicit instantiation that
3341 are not required by exported symbols.
3343 2018-07-16 Jonathan Wakely <jwakely@redhat.com>
3345 * scripts/create_testsuite_files: Fix typo in comment.
3348 * include/bits/shared_ptr.h (less<shared_ptr<_Tp>>): Remove
3349 non-standard partial specialization.
3350 * include/bits/shared_ptr_base.h (_Sp_less): Remove class definition.
3351 (less<__shared_ptr<_Tp, _Lp>): Remove partial specialization.
3352 * testsuite/20_util/shared_ptr/comparison/86537.cc: New test.
3354 2018-07-16 Andreas Krebbel <krebbel@linux.ibm.com>
3356 * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
3357 * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
3358 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
3360 2018-07-06 François Dumont <fdumont@gcc.gnu.org>
3362 * include/debug/functions.h (__gnu_debug::__check_string): Move...
3363 * include/debug/string (__gnu_debug::__check_string): ... here.
3364 (_GLIBCXX_DEBUG_VERIFY_STR_COND_AT): New.
3365 (__glibcxx_check_string_n_constructor): New.
3366 (__gnu_debug::basic_string<>(const _CharT*, size_type, const _Alloc&)):
3368 (__glibcxx_check_string_constructor): New.
3369 (__gnu_debug::basic_string<>(const _CharT*, const _Alloc&)):
3371 * testsuite/21_strings/basic_string/debug/1_neg.cc: New.
3372 * testsuite/21_strings/basic_string/debug/2_neg.cc: New.
3374 2018-07-06 Jonathan Wakely <jwakely@redhat.com>
3376 PR libstdc++/84928 use std::move in <numeric> algorithms
3377 * include/bits/stl_numeric.h (_GLIBCXX_MOVE_IF_20): Define macro to
3378 conditionally move, according to __cplusplus value.
3379 (accumulate, inner_product, partial_sum, adjacent_difference): Use
3380 _GLIBCXX_MOVE_IF_20.
3381 * testsuite/26_numerics/accumulate/lwg2055.cc: New test.
3382 * testsuite/26_numerics/adjacent_difference/lwg2055.cc: New test.
3383 * testsuite/26_numerics/inner_product/lwg2055.cc: New test.
3384 * testsuite/26_numerics/partial_sum/lwg2055.cc: New test.
3386 * config/abi/pre/gnu.ver: Use wildcards to combine related patterns.
3388 P0935R0 Eradicating unnecessarily explicit default constructors
3389 * config/abi/pre/gnu.ver: Tighten existing patterns and export new
3390 default constructor symbols.
3391 * include/std/sstream (basic_stringbuf, basic_istringstream)
3392 (basic_ostringstream, basic_stringstream): Remove default arguments
3393 from explicit constructors taking ios_base::openmode and add separate
3394 non-explicit default constructors.
3395 * testsuite/27_io/basic_istringstream/cons/default.cc: New.
3396 * testsuite/27_io/basic_ostringstream/cons/default.cc: New.
3397 * testsuite/27_io/basic_stringstream/cons/default.cc: New.
3398 * testsuite/27_io/basic_stringbuf/cons/char/default.cc: New.
3399 * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: New.
3401 * include/std/variant (__accepted_index): Use void_t.
3403 2018-07-05 Jonathan Wakely <jwakely@redhat.com>
3406 * config/abi/pre/gnu.ver: Export move constructors and move
3407 assignment operators for std::logic_error and std::runtime_error.
3408 * include/std/stdexcept: Use _GLIBCXX_NOTHROW instead of
3409 _GLIBCXX_USE_NOEXCEPT.
3410 (logic_error, runtime_error): Declare move constructors and move
3411 assignment operators. When not declared already, define copy
3412 constructors and copy assignment operators as explicit-defaulted.
3413 (domain_error, invalid_argument, length_error, out_of_range)
3414 (overflow_error, underflow_error): Define move constructors and move
3415 assignment operators as explicitly-defaulted.
3416 * libsupc++/exception.h (exception): Likewise.
3417 * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Define
3418 move constructors and move assignment operators as defaulted.
3419 * testsuite/19_diagnostics/stdexcept.cc: Check that constructors and
3420 assignment operators are defined.
3422 * testsuite/21_strings/basic_string/cons/char/deduction.cc: XFAIL for
3424 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
3426 * testsuite/21_strings/basic_string/requirements/
3427 explicit_instantiation/debug.cc: Likewise.
3430 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
3431 (basic_string::assign(basic_string&&)): Add conditional noexcept
3432 depending on the allocator's is_always_equal property (LWG 2063).
3433 * testsuite/21_strings/basic_string/modifiers/assign/char/
3434 move_assign.cc: Check for non-throwing exception specification.
3435 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
3436 move_assign.cc: Likewise.
3439 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
3440 [_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
3441 Add GLIBCXX_NOEXCEPT.
3442 (basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
3443 to depend on the allocator's is_always_equal property (LWG 2063).
3444 (basic_string::swap(basic_string&)): Likewise.
3445 * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
3446 (basic_string::swap(basic_string&)): Likewise.
3447 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
3448 Check is_nothrow_move_assignable.
3449 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
3450 Check is_nothrow_move_assignable.
3451 * testsuite/21_strings/basic_string/cons/char/
3452 noexcept_move_construct.cc: Likewise.
3453 * testsuite/21_strings/basic_string/cons/wchar_t/
3454 noexcept_move_construct.cc: Likewise.
3456 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
3458 P0646R1 Improving the Return Value of Erase-Like Algorithms I
3459 * include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
3461 (forward_list::__remove_return_type): Define typedef as size_type or
3462 void, according to __cplusplus value.
3463 (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
3464 empty, according to __cplusplus value.
3465 (forward_list::remove, forward_list::unique): Use typedef and macro
3466 to change return type and add abi-tag for C++2a.
3467 (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
3468 typedef to change return type for C++2a.
3469 * include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
3470 (forward_list::remove, forward_list::remove_if<Pred>)
3471 (forward_list::unique<BinPred>): Return number of removed elements
3473 * include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
3474 (list::remove, list::unique, list::remove_if<Predicate>)
3475 (list::unique<BinaryPredicate>): Return number of removed elements
3477 * include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
3478 (list::__remove_return_type): Define typedef as size_type or
3479 void, according to __cplusplus value.
3480 (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
3481 empty, according to __cplusplus value.
3482 (list::remove, list::unique): Use typedef and macro to change return
3483 type and add abi-tag for C++2a.
3484 (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
3485 typedef to change return type for C++2a.
3486 * include/std/version (__cpp_lib_list_remove_return_type): Define.
3487 * testsuite/23_containers/forward_list/operations/
3488 remove_cxx20_return.cc: New.
3489 * testsuite/23_containers/forward_list/operations/
3490 unique_cxx20_return.cc: New.
3492 P0458R2 Checking for Existence of an Element in Associative Containers
3493 * include/bits/stl_map.h (map::contains): Add for C++2a.
3494 * include/bits/stl_multimap.h (multimap::contains): Likewise.
3495 * include/bits/stl_multiset.h (multiset::contains): Likewise.
3496 * include/bits/stl_set.h (set::contains): Likewise.
3497 * include/bits/stl_tree.h (__has_is_transparent_t): Define alias.
3498 (_Rb_tree::_M_find_tr, _Rb_tree::_M_count_tr)
3499 (_Rb_tree::_M_lower_bound_tr, _Rb_tree::_M_upper_bound_tr)
3500 (_Rb_tree::_M_equal_range_tr): Use __has_is_transparent_t.
3501 * include/bits/unordered_map.h (unordered_map::contains)
3502 (unordered_multimap::contains): Add for C++2a.
3503 * include/bits/unordered_set.h (unordered_set::contains)
3504 (unordered_multiset::contains): Likewise.
3505 * testsuite/23_containers/map/operations/contains.cc: New.
3506 * testsuite/23_containers/multimap/operations/contains.cc: New.
3507 * testsuite/23_containers/multiset/operations/contains.cc: New.
3508 * testsuite/23_containers/set/operations/contains.cc: New.
3509 * testsuite/23_containers/unordered_map/operations/contains.cc: New.
3510 * testsuite/23_containers/unordered_multimap/operations/contains.cc:
3512 * testsuite/23_containers/unordered_multiset/operations/contains.cc:
3514 * testsuite/23_containers/unordered_set/operations/contains.cc: New.
3516 2018-07-04 François Dumont <fdumont@gcc.gnu.org>
3519 * include/debug/string
3520 (__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
3521 Use __glibcxx_check_insert_range.
3522 * 21_strings/basic_string/cons/char/1.cc: Adapt test to use
3523 __gnu_debug::string when _GLIBCXX_DEBUG.
3524 * 21_strings/basic_string/init-list.cc: Likewise.
3525 * 21_strings/basic_string/modifiers/insert/char/1.cc: Likewise.
3526 * 21_strings/basic_string/modifiers/insert/char/2.cc: Likewise.
3527 * 21_strings/basic_string/modifiers/insert/char/83328.cc: Likewise.
3528 * 21_strings/basic_string/types/1.cc: Likewise.
3530 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
3532 * testsuite/25_algorithms/make_heap/complexity.cc: Require effective
3533 target for std::random_device.
3534 * testsuite/26_numerics/random/random_device/cons/default.cc:
3536 * testsuite/experimental/algorithm/sample-2.cc: Likewise.
3537 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
3538 * testsuite/experimental/random/randint.cc: Likewise.
3539 * testsuite/lib/libstdc++.exp
3540 (check_effective_target_random_device): New proc.
3542 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
3543 Jakub Jelinek <jakub@redhat.com>
3545 * include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.
3547 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
3550 * include/std/type_traits (is_trivially_constructible): Check
3551 is_constructible before __is_trivially_constructible.
3552 * testsuite/20_util/is_trivially_constructible/value.cc: Add more
3553 tests, including negative cases.
3554 * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Use
3555 zero for dg-error lineno.
3556 * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
3559 * include/std/bit (__rotl, __rotr): Avoid branch.
3560 (_If_is_unsigned_integer): Use remove_cv_t.
3561 * testsuite/26_numerics/bit/bitops.count/popcount.cc: New.
3563 2018-07-03 Jonathan Wakely <jwakely@redhat.com>
3565 P0556R3 Integral power-of-2 operations, P0553R2 Bit operations
3566 * include/Makefile.am: Add new header.
3567 * include/Makefile.in: Regenerate.
3568 * include/precompiled/stdc++.h: Include new header.
3569 * include/std/bit: New header.
3570 (__rotl, __rotr, __countl_zero, __countl_one, __countr_zero)
3571 (__countr_one, __popcount, __ispow2, __ceil2, __floor2, __log2p1):
3573 [!__STRICT_ANSI__] (rotl, rotr, countl_zero, countl_one, countr_zero)
3574 (countr_one, popcount): Define for C++2a. Also overload for std::byte.
3575 (ispow2, ceil2, floor2, log2p1): Define for C++2a.
3576 [!__STRICT_ANSI__] (ispow2, ceil2, floor2, log2p1): Overload for
3578 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: New.
3579 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: New.
3580 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: New.
3581 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: New.
3582 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: New.
3583 * testsuite/26_numerics/bit/bitops.rot/rotr.cc: New.
3584 * testsuite/26_numerics/bit/bitops.count/countl_one.cc: New.
3585 * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: New.
3586 * testsuite/26_numerics/bit/bitops.count/countr_one.cc: New.
3587 * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: New.
3589 * include/bits/alloc_traits.h: Remove redundant preprocessor
3592 2018-07-03 François Dumont <fdumont@gcc.gnu.org>
3594 * include/bits/stl_algobase.h (__niter_wrap): New.
3595 (__copy_move_a2(_II, _II, _OI)): Use latter.
3596 (__copy_move_backward_a2(_BI1, _BI1, _BI2)): Likewise.
3597 (fill_n(_OI, _Size, const _Tp&)): Likewise.
3598 (equal(_II1, _II1, _II2)): Use __glibcxx_requires_can_increment.
3599 * include/debug/stl_iterator.h
3600 (std::__niter_base(const __gnu_cxx::_Safe_iterator<
3601 __gnu_cxx::__normal_iterator<>, _Sequence>&)): New declaration.
3602 * include/debug/vector (__niter_base(const __gnu_cxx::_Safe_iterator<
3603 __gnu_cxx::__normal_iterator<>, _Sequence>&)): New.
3605 2018-07-02 Jonathan Wakely <jwakely@redhat.com>
3607 P0758R1 Implicit conversion traits
3608 * include/std/type_traits [__cplusplus > 201703]
3609 (__is_convertible_helper::__is_nothrow_type): Define new member.
3610 (__is_convertible_helper<_From, _To, false>::__test_aux1): Add
3612 (__is_convertible_helper<_From, _To, false>::__test_nothrow)
3613 (__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add
3615 (is_nothrow_convertible, is_nothrow_convertible_v): Define for C++2a.
3616 * testsuite/20_util/is_nothrow_convertible/value.cc: New.
3617 * testsuite/20_util/is_nothrow_convertible/requirements/
3618 explicit_instantiation.cc: New.
3619 * testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc:
3622 P0887R1 The identity metafunction
3623 * include/std/type_traits (type_identity, type_identity_t): Define
3625 * testsuite/20_util/type_identity/requirements/alias_decl.cc: New.
3626 * testsuite/20_util/type_identity/requirements/
3627 explicit_instantiation.cc:New.
3628 * testsuite/20_util/type_identity/requirements/typedefs.cc: New.
3630 * include/bits/regex.h (sub_match::operator string_type): Call str().
3631 (sub_match::compare): Use _M_str() instead of str().
3632 (sub_match::_M_compare): New public function.
3633 (sub_match::__string_view): New helper type.
3634 (sub_match::_M_str): New overloaded functions to avoid creating a
3635 string_type object when not needed.
3636 (operator==, operator!=, operator<, operator>, operator<=, operator>=):
3637 Use sub_match::_M_compare instead of creating string_type objects.
3638 Fix Doxygen comments.
3639 * include/bits/regex_compiler.h (__has_contiguous_iter): Remove.
3640 (__is_contiguous_normal_iter): Rename to __is_contiguous_iter and
3642 (__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
3644 * include/std/type_traits (__enable_if_t): Define for C++11.
3645 * testsuite/28_regex/sub_match/compare.cc: New.
3646 * testsuite/util/testsuite_iterators.h (remove_cv): Add transformation
3648 (input_iterator_wrapper): Use remove_cv for value_type argument of
3649 std::iterator base class.
3651 2018-06-29 Jonathan Wakely <jwakely@redhat.com>
3653 * testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc:
3654 Add whitespace to dejagnu directive.
3655 * testsuite/23_containers/array/element_access/at_neg.cc: Likewise.
3657 2018-06-27 François Dumont <fdumont@gcc.gnu.org>
3659 * include/bits/stl_vector.h
3660 (struct _Vector_base<>::_Vector_impl_data): New.
3661 (struct _Vector_base<>::_Vector_impl): Inherit from latter.
3662 (_Vector_base<>::_Vector_impl::_M_swap_data): Move...
3663 (_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here.
3664 (_Vector_base<>::_Vector_impl()): Add noexcept qualification.
3665 (_Vector_base<>::_Vector_impl(_Vector_impl&&)): New.
3666 (_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New.
3667 (_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter.
3668 (_Vector_base()): Default.
3669 (_Vector_base(_Vector_base&&)): Default.
3670 (_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete.
3671 (_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete.
3672 (_Vector_base::_M_create_storage(size_t)): Make protected.
3673 (vector()): Default.
3674 (vector(vector&&)): Default.
3675 (vector(vector&&, const allocator_type&, true_type)): New.
3676 (vector(vector&&, const allocator_type&, false_type)): New.
3677 (vector(vector&&, const allocator_type&)): Use latters.
3678 (vector(_InputIte, _InputIte, const allocator_type&)): Call
3679 _M_range_initialize directly.
3680 * include/debug/vector
3681 (vector(vector&&, const allocator_type&)): Add noexcept qualification.
3682 * testsuite/23_containers/vector/allocator/default_init.cc: New.
3683 * testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add
3686 2018-06-27 Jonathan Wakely <jwakely@redhat.com>
3688 * include/bits/cpp_type_traits.h [__cplusplus >= 201703]
3689 (__is_byte<byte>): Define specialization for std::byte.
3692 * include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0]
3693 Declare explicit instantiations of COW empty reps and I/O functions.
3695 2018-06-26 David Edelsohn <dje.gcc@gmail.com>
3697 * testsuite/experimental/algorithm/sample-2.cc: Add TLS DejaGNU
3699 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
3701 2018-06-26 Jonathan Wakely <jwakely@redhat.com>
3703 * include/bits/regex.tcc (regex_iterator::operator==): Add missing
3706 2018-06-25 Jonathan Wakely <jwakely@redhat.com>
3709 * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
3710 Replace dict comprehension.
3713 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3716 * include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
3717 Add try-catch block.
3718 * testsuite/23_containers/vector/cons/86292.cc: New.
3720 * doc/xml/manual/status_cxx2017.xml: Document N4531 status.
3722 * include/experimental/algorithm (sample, shuffle): Add new overloads
3723 using per-thread random number engine.
3724 * testsuite/experimental/algorithm/sample.cc: Simpify and reduce
3725 dependencies by using __gnu_test::test_container.
3726 * testsuite/experimental/algorithm/sample-2.cc: New.
3727 * testsuite/experimental/algorithm/shuffle.cc: New.
3729 2018-06-22 Jonathan Wakely <jwakely@redhat.com>
3731 * config/abi/pre/gnu.ver: Fix __cxx11::basic_string patterns for
3732 different size_t mangling on 32-bit targets.
3735 * include/experimental/memory_resource
3736 (__resource_adaptor_common::_AlignMgr::_M_token_size): Use type large
3737 enough for result of left shift.
3740 * include/bits/basic_string.tcc:
3741 [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI]
3742 (basic_string<char>::_Rep::_S_empty_rep_storage)
3743 (basic_string<wchar_t>::_Rep::_S_empty_rep_storage): Add explicit
3744 instantiation declarations.
3745 [__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable
3746 explicit instantiation declarations.
3747 * testsuite/21_strings/basic_string/cons/char/86138.cc: New.
3748 * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New.
3750 2018-06-21 Jonathan Wakely <jwakely@redhat.com>
3753 * acinclude.m4 (libtool_VERSION): Bump to 6:26:0.
3754 * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 and export new symbol.
3755 * configure: Regenerate.
3756 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
3757 (basic_string::insert(const_iterator, initializer_list<C>)): Add.
3758 [_GLIBCXX_USE_CXX11_ABI && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
3759 (basic_string::insert(iterator, initializer_list<C>)): Suppress
3761 * include/debug/string (basic_string::insert(iterator, C)): Change
3762 first parameter to const_iterator.
3763 (basic_string::insert(iterator, size_type, C)): Likewise. Change
3764 return type to iterator.
3765 (basic_string::insert(iterator, InputIterator, InputIterator)):
3767 (basic_string::insert(iterator, initializer_list<C>)): Change first
3768 parameter to const_iterator and return type to iterator.
3769 * src/c++11/string-inst.cc: Extend comment.
3770 * testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc:
3772 * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
3774 * testsuite/util/testsuite_abi.cc: Add new symbol version.
3776 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3779 * include/experimental/memory_resource
3780 (__resource_adaptor_imp::do_deallocate): Add missing return.
3781 * testsuite/experimental/memory_resource/new_delete_resource.cc: New.
3782 * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
3783 resource_adaptor with std::allocator, __gnu_cxx::new_allocator and
3784 __gnu_cxx::malloc_allocator.
3787 * include/experimental/memory_resource (__resource_adaptor_common):
3789 (__resource_adaptor_common::_AlignMgr): Helper for obtaining aligned
3790 pointer from unaligned, and vice versa.
3791 (__resource_adaptor_imp::do_allocate): Use _AlignMgr to adjust
3792 allocated pointer to meet alignment request.
3793 (__resource_adaptor_imp::do_deallocate): Use _AlignMgr to retrieve
3794 original pointer for deallocation.
3795 (__resource_adaptor_imp::do_is_equal): Reformat.
3796 (__resource_adaptor_imp::_S_aligned_size): Remove.
3797 (__resource_adaptor_imp::_S_supported): Remove.
3798 (new_delete_resource): Use __gnu_cxx::new_allocator.
3799 * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
3800 extended alignments and use debug_allocator to check for matching
3801 allocate/deallocate pairs.
3803 2018-06-21 François Dumont <fdumont@gcc.gnu.org>
3805 * include/debug/safe_iterator.h
3806 (_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
3807 Compare __x base iterator with a value-initialized iterator of the
3810 2018-06-20 Jonathan Wakely <jwakely@redhat.com>
3813 * include/experimental/memory_resource (__resource_adaptor_imp): Add
3814 static assertions to enforce requirements on pointer types.
3815 (__resource_adaptor_imp::get_allocator()): Add noexcept.
3816 (new_delete_resource, null_memory_resource): Return address of an
3817 object with dynamic storage duration.
3818 (__null_memory_resource): Remove.
3819 * testsuite/experimental/memory_resource/70966.cc: New.
3821 * testsuite/20_util/duration/arithmetic/dr3050.cc: Add new test
3822 missed from recent commit.
3824 2018-06-19 Jonathan Wakely <jwakely@redhat.com>
3826 * include/std/utility: Remove unused <exception> header.
3828 2018-06-18 Jonathan Wakely <jwakely@redhat.com>
3830 LWG 2975 ensure construct(pair<T,U>*, ...) used to construct pairs
3831 * include/std/scoped_allocator (__not_pair): Define SFINAE helper.
3832 (construct(_Tp*, _Args&&...)): Remove from overload set when _Tp is
3833 a specialization of std::pair.
3834 * testsuite/20_util/scoped_allocator/construct_pair.cc: Ensure
3835 pair elements are constructed correctly.
3837 LWG 2989 hide path iostream operators from normal lookup
3838 * include/bits/fs_path.h (operator<<, operator>>): Define inline as
3840 * testsuite/27_io/filesystem/path/io/dr2989.cc: New.
3842 LWG 3050 Fix cv-qualification of convertibility constraints
3843 * include/std/chrono (duration, operator*, operator/, operator%): Use
3844 const-qualified type as source type in is_convertible constraints.
3845 * testsuite/20_util/duration/arithmetic/dr3050.cc: New.
3846 * testsuite/20_util/duration/cons/dr3050.cc: New.
3847 * testsuite/20_util/duration/literals/range.cc: Rename to...
3848 * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
3851 2018-06-18 Maya Rashish <coypu@sdf.org>
3853 * crossconfig.m4: Handle OpenBSD just like NetBSD.
3854 * configure: Rebuilt.
3856 2018-06-18 Jonathan Wakely <jwakely@redhat.com>
3858 P0754R2 <version> header
3859 * include/Makefile.am: Add new header.
3860 * include/Makefile.in: Regenerate.
3861 * include/bits/c++config: Change doxygen comment to suggest <version>
3862 instead of <iosfwd>.
3863 * include/precompiled/stdc++.h: Include <cwchar> and <cwctype>
3864 unconditionally. Add C++17 and C++20 headers.
3865 * include/std/version: New header.
3866 * testsuite/17_intro/headers/c++2017/all_attributes.cc: New.
3867 * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: New.
3868 * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: New.
3869 * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: New.
3870 * testsuite/17_intro/headers/c++2017/operator_names.cc: New.
3871 * testsuite/17_intro/headers/c++2017/stdc++.cc: New.
3872 * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
3874 * testsuite/17_intro/headers/c++2020/all_attributes.cc: New.
3875 * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: New.
3876 * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: New.
3877 * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: New.
3878 * testsuite/17_intro/headers/c++2020/operator_names.cc: New.
3879 * testsuite/17_intro/headers/c++2020/stdc++.cc: New.
3880 * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc:
3882 * testsuite/18_support/headers/version/macros.cc: New.
3883 * testsuite/18_support/headers/version/macros.cc: New.
3885 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when
3886 enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and
3888 * config.h.in: Regenerate.
3889 * configure: Regenerate.
3890 * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink.
3892 LWG 3035. std::allocator's constructors should be constexpr
3893 * include/bits/allocator.h (allocator): Add constexpr to constructors
3894 for C++2a. Replace dynamic exception specifications with NOTHROW
3896 (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
3898 * include/bits/c++config (_GLIBCXX20_CONSTEXPR): Define.
3899 * include/ext/malloc_allocator.h (malloc_allocator): Add constexpr
3900 to constructors for C++2a.
3901 * include/ext/new_allocator.h (new_allocator): Likewise.
3903 2018-06-16 Jonathan Wakely <jwakely@redhat.com>
3905 LWG 3076 basic_string CTAD ambiguity
3906 * doc/xml/manual/intro.xml: Document LWG 3076 change.
3907 * include/bits/basic_string.h
3908 [__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
3909 (basic_string(const _CharT*, const _Alloc&)): Turn into a function
3910 template constrained by _RequireAllocator.
3911 (basic_string(size_type, _CharT, const _Alloc&)): Likewise.
3912 * src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
3914 * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
3916 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
3919 2018-06-15 Jonathan Wakely <jwakely@redhat.com>
3922 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
3923 (basic_string::data()): Unshare string.
3924 * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
3927 * include/std/string_view (basic_string_view(const CharT*)): Remove
3928 check for null pointer and add nonnull attribute.
3929 (compare(const CharT*), compare(size_type, size_type, const CharT*))
3930 (find(const CharT*, size_type), rfind(const CharT*, size_type))
3931 (find_first_of(const CharT*, size_type))
3932 (find_last_of(const CharT*, size_type))
3933 (find_first_not_of(const CharT*, size_type))
3934 (find_last_not_of(const CharT*, size_type)): Add nonnull attribute.
3935 * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: New.
3936 * testsuite/21_strings/basic_string_view/operations/compare/char/
3938 * testsuite/21_strings/basic_string_view/operations/find/char/
3940 * testsuite/21_strings/basic_string_view/operations/rfind/char/
3944 * include/bits/random.h (random_device(const string&)): Remove
3947 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
3948 define for C++17 and above.
3950 LWG 2993 reference_wrapper<T> conversion from T&&
3951 * doc/xml/manual/intro.xml: Document LWG 2993 change.
3952 * include/bits/refwrap.h (reference_wrapper(_Tp&)): Remove.
3953 (reference_wrapper(_Tp&&)): Remove.
3954 (reference_wrapper<_Up>(_Up&&)): Define new constructor as constrained
3956 (reference_wrapper): Add deduction guide.
3957 * testsuite/20_util/reference_wrapper/deduction.cc: New.
3958 * testsuite/20_util/reference_wrapper/lwg2993.cc: New.
3960 LWG 3039 Unnecessary decay in thread and packaged_task
3961 * include/std/future (__constrain_pkgdtask): Replace with ...
3962 (packaged_task::__not_same): New alias template, using
3963 __remove_cvref_t instead of decay.
3964 * include/std/thread (thread::__not_same): Add comment.
3966 2018-06-14 Jonathan Wakely <jwakely@redhat.com>
3968 LWG 3075 basic_string needs deduction guides from basic_string_view
3969 * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
3970 deduction from string views.
3971 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
3974 LWG 3074 make scalar types non-deduced in valarray non-member functions
3975 * include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
3976 scalar parameters to be a non-deduced context.
3977 * include/std/valarray (_DEFINE_BINARY_OPERATOR): Likewise. Adjust
3979 * testsuite/26_numerics/valarray/operators.cc: Test scalar operands.
3980 * testsuite/26_numerics/valarray/transcend.cc: New.
3982 * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
3983 Move back to <utility>.
3984 * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
3987 P0935R0 Eradicating unnecessarily explicit default constructors
3988 * include/backward/strstream (strstreambuf): Add non-explicit default
3990 * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
3992 * include/bits/regex.h (match_results): Likewise.
3993 * testsuite/22_locale/conversions/buffer/1.cc: Test for non-explicit
3994 default constructor.
3995 * testsuite/22_locale/conversions/string/1.cc: Likewise.
3996 * testsuite/28_regex/match_results/ctors/char/default.cc: Likewise.
3997 * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
3999 * include/std/tuple (__cpp_lib_tuple_element_t): Move feature test
4000 macro from <utility> and change type to long.
4001 * include/std/utility (__cpp_lib_tuple_element_t): Remove.
4002 * testsuite/20_util/tuple/tuple_element_t.cc: Check for feature test
4005 P0935R0 Eradicating unnecessarily explicit default constructors
4006 * include/bits/random.h (uniform_real_distribution::param_type)
4007 (normal_distribution::param_type, lognormal_distribution::param_type)
4008 (gamma_distribution::param_type, chi_squared_distribution::param_type)
4009 (cauchy_distribution::param_type, fisher_f_distribution::param_type)
4010 (student_t_distribution::param_type)
4011 (bernoulli_distribution::param_type)
4012 (binomial_distribution::param_type)
4013 (geometric_distribution::param_type)
4014 (negative_binomial_distribution::param_type)
4015 (poisson_distribution::param_type)
4016 (exponential_distribution::param_type)
4017 (weibull_distribution::param_type)
4018 (extreme_value_distribution::param_type): Add non-explicit default
4019 constructors. Remove default argument for first parameter of explicit
4021 * include/bits/uniform_int_dist.h
4022 (uniform_int_distribution::param_type): Likewise.
4023 * include/ext/random
4024 (beta_distribution::param_type, rice_distribution::param_type)
4025 (nakagami_distribution::param_type, pareto_distribution::param_type)
4026 (k_distribution::param_type, arcsine_distribution::param_type)
4027 (hoyt_distribution::param_type, triangular_distribution::param_type)
4028 (von_mises_distribution::param_type)
4029 (hypergeometric_distribution::param_type)
4030 (logistic_distribution::param_type)
4031 (uniform_inside_sphere_distribution::param_type): Likewise.
4032 (uniform_on_sphere_distribution::param_type): Make default constructor
4034 * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
4035 Test param_type for non-explicit default constructor.
4036 * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
4038 * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
4040 * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
4042 * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
4044 * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
4046 * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
4048 * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
4050 * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
4052 * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
4054 * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
4056 * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
4058 * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
4060 * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
4062 * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
4064 * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
4066 * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
4068 * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
4070 * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
4072 * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
4074 * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
4075 * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
4076 * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
4077 * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
4079 * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
4080 * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
4081 * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
4082 * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
4084 * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
4085 * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
4086 * testsuite/ext/random/triangular_distribution/cons/default.cc:
4088 * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
4090 * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
4092 * testsuite/ext/random/von_mises_distribution/cons/default.cc:
4095 2018-06-14 Daniel Trebbien <dtrebbien@gmail.com>
4096 Jonathan Wakely <jwakely@redhat.com>
4099 * include/bits/vector.tcc (vector::_M_default_append(size_type)):
4100 Default-construct new elements before moving existing ones.
4101 * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
4104 2018-06-13 Jonathan Wakely <jwakely@redhat.com>
4107 * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
4109 (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
4110 Use node allocator to create and destroy elements.
4111 (forward_list::_Tp_alloc_type): Remove unused typedef.
4112 (forward_list::_Alloc_traits): Use allocator_traits instead of
4113 __gnu_cxx::__alloc_traits.
4115 2018-06-13 François Dumont <fdumont@gcc.gnu.org>
4117 * include/debug/helper_functions.h
4118 (__gnu_debug::_Safe_iterator<>): Add declaration.
4119 (__can_advance(_Ite, _Size)): New.
4120 (__can_advance(const _Safe_iterator<>&, _Size)): Overload declaration.
4121 * include/debug/functions.h
4122 (__gnu_debug::_Safe_iterator<>): Remove declaration.
4123 * include/debug/stl_iterator.h
4124 (__can_advance(const _Safe_iterator<>&)): New definition.
4125 * include/debug/stl_iterator.h
4126 (__can_advance(const std::reverse_iterator<>&, _Size)): New.
4127 (__can_advance(const std::move_iterator<>&, _Size)): New.
4128 * include/debug/macros.h (__glibcxx_check_can_increment): New.
4129 * include/debug/debug.h (__glibcxx_requires_can_increment): New.
4130 * include/bits/stl_algobase.h (fill_n): Use latter.
4131 * testsuite/25_algorithms/fill_n/2.cc: New.
4132 * testsuite/25_algorithms/fill_n/debug/1_neg.cc: New.
4133 * testsuite/25_algorithms/fill_n/debug/2_neg.cc: New.
4134 * testsuite/25_algorithms/fill_n/debug/3_neg.cc: New.
4135 * testsuite/25_algorithms/fill_n/debug/4_neg.cc: New.
4137 * include/debug/debug.h (__glibcxx_requires_can_increment_range): New.
4138 (__glibcxx_requires_can_decrement_range): New.
4140 2018-06-12 François Dumont <fdumont@gcc.gnu.org>
4142 * include/debug/macros.h (__glibcxx_check_can_increment_range): New.
4143 (__glibcxx_check_can_decrement_range): New.
4144 * include/bits/stl_algobase.h (std::copy(_II, _II, _OI)): Use
4145 __glibcxx_requires_can_increment_range.
4146 (std::move(_II, _II, _OI)): Likewise.
4147 (std::copy_backward(_BI, _BI, _BI2)): Use
4148 __glibcxx_requires_can_decrement_range.
4149 (std::move_backward(_BI, _BI, _BI2)): Likewise.
4150 * testsuite/25_algorithms/copy_backward/debug/1_neg.cc: New.
4151 * testsuite/25_algorithms/copy_backward/debug/2_neg.cc: New.
4152 * testsuite/25_algorithms/copy_backward/debug/3_neg.cc: New.
4153 * testsuite/25_algorithms/equal/debug/1_neg.cc: New.
4154 * testsuite/25_algorithms/equal/debug/2_neg.cc: New.
4155 * testsuite/25_algorithms/equal/debug/3_neg.cc: New.
4157 2018-06-12 Jonathan Wakely <jwakely@redhat.com>
4159 P0935R0 Eradicating unnecessarily explicit default constructors
4160 * include/bits/random.h (linear_congruential_engine)
4161 (mersenne_twister_engine, subtract_with_carry_engine, random_device)
4162 (uniform_real_distribution, normal_distribution)
4163 (lognormal_distribution, gamma_distribution, chi_squared_distribution)
4164 (cauchy_distribution, fisher_f_distribution, student_t_distribution)
4165 (bernoulli_distribution, binomial_distribution,geometric_distribution)
4166 (negative_binomial_distribution, exponential_distribution)
4167 (weibull_distribution, extreme_value_distribution): Add non-explicit
4168 default constructors. Remove default argument for first parameter of
4169 explicit constructors.
4170 (piecewise_constant_distribution, piecewise_linear_distribution):
4171 Make default constructor non-explicit.
4172 * include/bits/uniform_int_dist.h (uniform_int_distribution): Add
4173 non-explicit default constructors. Remove default argument for first
4174 parameter of explicit constructor.
4175 * include/ext/random
4176 (simd_fast_mersenne_twister_engine, beta_distribution)
4177 (rice_distribution, nakagami_distribution, pareto_distribution)
4178 (k_distribution, arcsine_distribution, hoyt_distribution)
4179 (triangular_distribution, von_mises_distribution)
4180 (hypergeometric_distribution, logistic_distribution)
4181 (uniform_inside_sphere_distribution): Likewise.
4182 (uniform_on_sphere_distribution): Make default constructor
4184 * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
4185 Test for non-explicit default constructor. Fix references to standard.
4186 * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
4188 * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
4190 * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
4192 * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
4194 * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
4196 * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
4198 * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
4200 * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
4202 * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
4204 * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
4206 * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
4208 * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
4210 * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
4212 * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
4214 * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
4216 * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
4218 * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
4220 * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
4222 * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
4224 * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
4225 * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
4226 * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
4227 * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
4229 * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
4230 * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
4231 * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
4232 * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
4234 * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
4235 * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
4236 * testsuite/ext/random/triangular_distribution/cons/default.cc:
4238 * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
4240 * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
4242 * testsuite/ext/random/von_mises_distribution/cons/default.cc:
4244 * testsuite/util/testsuite_common_types.h
4245 (implicitly_default_constructible): New helper.
4247 2018-06-08 Jonathan Wakely <jwakely@redhat.com>
4249 * include/bits/ios_base.h (ios::Init::Init(const Init&))
4250 (ios::Init::operator=): Define as defaulted.
4251 * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)):
4253 * include/bits/stream_iterator.h (istream_iterator::operator=)
4254 (ostream_iterator::operator=): Likewise.
4255 * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
4257 * include/std/bitset (bitset::reference::reference(const reference&)):
4259 * include/std/complex (complex<float>::complex(const complex&))
4260 (complex<double>::complex(const complex&))
4261 (complex<long double>::complex(const complex&)): Likewise.
4263 2018-06-07 Jonathan Wakely <jwakely@redhat.com>
4265 * include/bits/regex.h (sub_match): Add noexcept to default
4266 constructor and length observer.
4267 (match_results): Add noexcept to default constructor and observers
4268 with no preconditions. Define destructor as defaulted.
4269 (operator==, operator!=, swap): Add noexcept.
4270 (regex_iterator): Add default member initializers and define default
4271 constructor and destructor as defaulted. Add noexcept to equality
4272 and dereference operators.
4274 2018-06-07 François Dumont <fdumont@gcc.gnu.org>
4276 * src/c++11/debug.cc
4277 (_Safe_iterator_base::_M_detach()): Reset state only if needed.
4278 (_Safe_iterator_base::_M_detach_single()): Likewise.
4279 (_Safe_local_iterator_base::_M_detach()): Reset state only if needed.
4280 (_Safe_local_iterator_base::_M_detach_single()): Likewise.
4282 2018-06-06 Jonathan Wakely <jwakely@redhat.com>
4284 * include/bits/shared_ptr_base.h (__shared_count): Remove redundant
4285 move of const value.
4287 2018-06-06 Jakub Jelinek <jakub@redhat.com>
4290 * include/bits/c++config: Check __cpp_transactional_memory >= 201500L
4291 rather than __cpp_transactional_memory >= 201505L.
4293 2018-06-06 Jonathan Wakely <jwakely@redhat.com>
4296 * include/bits/quoted_string.h (_Quoted_string<basic_string_view, C>):
4297 Define new partial specialization.
4298 * include/std/iomanip (quoted(basic_string_view<C,T>, C, C)): Define
4300 (operator<<(basic_ostream<C,T>&, const _Quoted_string<S,C>&)): Use
4301 value not reference for iteration.
4302 * testsuite/27_io/manipulators/standard/char/quoted.cc: Adjust
4304 * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
4305 * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
4308 2018-06-05 Jonathan Wakely <jwakely@redhat.com>
4310 * include/std/type_traits: Fix comment typos.
4312 * testsuite/27_io/filesystem/operations/read_symlink.cc: XFAIL for
4314 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
4315 * testsuite/experimental/filesystem/operations/read_symlink.cc:
4318 2018-06-05 François Dumont <fdumont@gcc.gnu.org>
4320 * include/bits/stl_tempbuf.h
4321 (_Temporary_buffer(_FwdIte, _FwdIte)): Delete, replaced by...
4322 (_Temporary_buffer(_FwdIte, size_type)): ...this, new.
4323 * include/ext/memory (temporary_buffer<>(_FwdIte, _FwdIte)): Adapt.
4324 * include/bits/stl_algo.h (__stable_partition): Adapt.
4325 (__inplace_merge): Adapt.
4326 (__stable_sort): Adapt.
4328 2018-06-04 Jonathan Wakely <jwakely@redhat.com>
4331 * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
4332 unconditionally. Remove redundant declaration.
4333 [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
4334 alignment-specifier.
4336 * include/bits/postypes.h (fpos): Define special members as defaulted.
4339 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
4340 the static variable correctly.
4342 2018-05-24 Jonathan Wakely <jwakely@redhat.com>
4344 PR libstdc++/78870 support std::filesystem on Windows
4345 * config.h.in: Regenerate.
4346 * configure: Regenerate.
4347 * configure.ac: Check for link, readlink and symlink.
4348 * include/bits/fs_path.h (path::operator/=(const path&)): Move
4349 definition out of class body.
4350 (path::is_absolute(), path::_M_append(path)): Likewise.
4351 (operator<<(basic_ostream, const path&)): Use std::quoted directly.
4352 (operator>>(basic_istream, path&)): Likewise.
4353 (u8path): Reorder definitions and fix Windows implementation.
4354 (path::is_absolute()): Define inline and fix for Windows.
4355 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
4356 Define POSIX version inline.
4357 (path::_M_append(path)): Define inline.
4358 * include/experimental/bits/fs_path.h (path::is_absolute()): Move
4359 definition out of class body.
4360 (operator<<(basic_ostream, const path&)): Fix type of delimiter and
4362 (operator>>(basic_istream, path&)): Likewise.
4363 (path::is_absolute()): Define inline and fix for Windows.
4364 * src/filesystem/dir-common.h (__gnu_posix): New namespace.
4365 (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
4366 (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
4367 Define as adaptors for Windows functions/types or as
4368 using-declarations for POSIX functions/types.
4369 (_Dir_base, get_file_type): Qualify names to use declarations from
4370 __gnu_posix namespace.
4371 (_Dir_base::is_dor_or_dotdot): New helper functions.
4372 * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
4373 names to use declarations from __gnu_posix namespace.
4374 * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
4375 (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
4376 (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
4377 (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
4378 (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
4379 (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
4380 Define as adaptors for Windows functions/types or as
4381 using-declarations for POSIX functions/types.
4382 (stat_type, do_copy_file): Qualify names to use declarations from
4383 __gnu_posix namespace.
4384 (do_space): Declare new function.
4385 (make_file_type): Only use S_ISLNK if defined.
4386 * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
4387 path::value_type not char.
4388 (filesystem::copy, create_dir, filesystem::create_directory): Qualify
4389 names to use declarations from __gnu_posix namespace.
4390 (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
4391 add implementation for Windows.
4392 (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
4393 (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
4394 [!_PC_PATH_MAX]: Don't use pathconf.
4395 [PATH_MAX]: Use if defined.
4396 (filesystem::current_path(const path&, error_code&))
4397 (filesystem::equivalent, do_stat, filesystem::hard_link_count)
4398 (filesystem::last_write_time, filesystem::permissions): Use names
4400 (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
4401 (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
4402 implementation for Windows.
4403 (filesystem::rename, filesystem::resize_file): Use names from
4405 (filesystem::space): Use do_space.
4406 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
4407 (filesystem::status, filesystem::symlink_status): Use names from
4409 (filesystem::temp_directory_path): Add implementation for Windows.
4410 * src/filesystem/path.cc (dot): Define constant.
4411 (path::replace_extension): Use dot.
4412 (path::_M_find_extension): Likewise. Use path::string_type not
4414 (path::_M_split_cmpts): Use dot.
4415 (filesystem_error::_M_get_what): Use u8string() not native().
4416 * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
4417 Qualify names to use declarations from __gnu_posix namespace.
4418 * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
4420 (filesystem::absolute(const path&, error_code&)): Add implementation
4422 (char_ptr, filesystem::canonical): Use path::value_type not char.
4423 (do_copy_file): Use names from __gnu_posix.
4424 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
4426 (filesystem::copy, create_dir, filesystem::create_directory): Qualify
4427 names to use declarations from __gnu_posix namespace.
4428 (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
4429 add implementation for Windows.
4430 (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
4431 (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
4432 [!_PC_PATH_MAX]: Don't use pathconf.
4433 [PATH_MAX]: Use if defined.
4434 (filesystem::current_path(const path&, error_code&))
4435 (filesystem::equivalent, do_stat, filesystem::hard_link_count)
4436 (filesystem::last_write_time, filesystem::permissions): Use names
4438 (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
4439 (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
4440 implementation for Windows.
4441 (filesystem::rename, filesystem::resize_file): Use names from
4444 (filesystem::space): Use do_space.
4445 (filesystem::status, filesystem::symlink_status): Use names from
4447 (filesystem::temp_directory_path): Add implementation for Windows.
4448 * src/filesystem/std-path.cc
4449 [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
4451 (dot): Define constant.
4452 (path::replace_extension, is_dot): Use dot.
4453 (path::lexically_normal): Check _M_type instead of calling
4454 non-existent function.
4455 (path::_M_find_extension): Use dot. Use path::string_type not
4457 (path::_M_split_cmpts): Use dot.
4458 (filesystem_error::_M_get_what): Use u8string() not native().
4459 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
4461 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
4463 * testsuite/27_io/filesystem/operations/absolute.cc: Use
4464 __gnu_test::root_path() instead of "/" and add Windows-specific tests.
4465 * testsuite/27_io/filesystem/operations/canonical.cc: Use
4466 path::string() to get narrow string, not path::native().
4467 * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
4468 with std::filesystem::path not std::basic_string.
4469 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
4470 * testsuite/27_io/filesystem/operations/exists.cc: Use
4471 __gnu_test::root_path() instead of "/".
4472 * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
4473 fstreams with std::filesystem::path not std::basic_string.
4474 * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
4475 path::string() to get narrow string.
4476 * testsuite/27_io/filesystem/operations/space.cc: Check results for
4477 errors, expect sensible values otherwise.
4478 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
4479 helpers for adjusting the environment on Windows.
4480 * testsuite/27_io/filesystem/path/append/path.cc: Test
4481 Windows-specific behaviour.
4482 * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
4483 of path::string_type objects.
4484 * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
4485 string to wide string on Windows.
4486 * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
4487 for backslash as root-directory.
4488 * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
4489 path::string() to get narrow string.
4490 * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
4492 * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
4494 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
4495 different definintion of absolute paths on Windows.
4496 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
4497 Do not use symlinks.
4498 * testsuite/experimental/filesystem/operations/absolute.cc: Test
4500 * testsuite/experimental/filesystem/operations/copy.cc: Construct
4501 fstreams with NTCTS not std::basic_string.
4502 * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
4503 * testsuite/experimental/filesystem/operations/exists.cc: Use
4504 __gnu_test::root_path() instead of "/".
4505 * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
4506 fstreams with NTCTS not std::basic_string.
4507 * testsuite/experimental/filesystem/operations/last_write_time.cc:
4508 Use path::string() to get narrow string.
4509 * testsuite/experimental/filesystem/operations/space.cc: Use
4510 __gnu_test::root_path() instead of "/".
4511 * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
4512 Add helpers for adjusting the environment on Windows.
4513 * testsuite/experimental/filesystem/path/append/path.cc: Use
4514 path::string() to get narrow strings for comparisons.
4515 * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
4516 * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
4518 * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
4519 * testsuite/experimental/filesystem/path/native/string.cc: Use
4520 string_type not std::string.
4521 * testsuite/experimental/filesystem/path/query/is_absolute.cc:
4522 Adjust for different definintion of absolute paths on Windows.
4523 * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
4525 (__gnu_test::scoped_file): Construct fstreams with NTCTS not
4528 2018-05-31 Jonathan Wakely <jwakely@redhat.com>
4531 * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
4532 uint_least16_t and uint_least32_t.
4533 (__make_unsigned<wchar_t>): Define unconditionally.
4534 (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
4536 (__make_unsigned_selector_base): New type to provide helper templates.
4537 (__make_unsigned_selector<_Tp, false, true>): Reimplement using
4538 __make_unsigned_selector_base helpers.
4539 (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
4540 (__make_signed_selector<_Tp, true, false>): Remove intermediate
4542 (__make_signed<wchar_t>, __make_signed<char16_t>)
4543 (__make_signed<char32_t>)): Define unconditionally.
4544 * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
4545 wchar_t, char16_t and char32_t are transformed correctly.
4546 * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
4548 * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
4549 wchar_t, char16_t and char32_t are transformed correctly.
4550 * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
4553 2018-05-29 Jonathan Wakely <jwakely@redhat.com>
4555 * include/std/variant (__erased_dtor): Qualify call to __get.
4557 2018-05-27 François Dumont <fdumont@gcc.gnu.org>
4559 * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
4560 (_Rb_tree(const allocator_type&)): Use latter.
4561 * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
4562 (map(initializer_list<value_type>, const allocator_type&)): Likewise.
4563 (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
4564 * include/bits/stl_multimap.h
4565 (multimap(const allocator_type&)): Likewise.
4566 (multimap(initializer_list<value_type>, const allocator_type&)):
4568 (multimap(_InputIterator, _InputIterator, const allocator_type&)):
4570 * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
4571 (set(initializer_list<value_type>, const allocator_type&)): Likewise.
4572 (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
4573 * include/bits/stl_multiset.h
4574 (multiset(const allocator_type&)): Likewise.
4575 (multiset(initializer_list<value_type>, const allocator_type&)):
4577 (multiset(_InputIterator, _InputIterator, const allocator_type&)):
4580 2018-05-25 François Dumont <fdumont@gcc.gnu.org>
4583 * src/c++11/debug.cc: Remove backtrace usage.
4585 2018-05-24 Maya Rashish <coypu@sdf.org>
4588 * crossconfig.m4: Test for aligned_alloc on netbsd.
4589 * configure: Regenerate.
4591 2018-05-24 Jonathan Wakely <jwakely@redhat.com>
4595 * include/bits/atomic_base.h (__atomic_base::value_type)
4596 (__atomic_base::difference_type): Add new typedefs.
4597 * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
4598 (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
4599 (atomic<T*>::operator++, atomic<T*>::operator--)
4600 (atomic<T*>::operator+=, atomic<T*>::operator-=)
4601 (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
4602 to enforce C++17 requirement on pointer arithmetic.
4603 (__atomic_val_t, __atomic_diff_t): New alias templates.
4604 (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
4605 (atomic_compare_exchange_weak_explicit)
4606 (atomic_compare_exchange_strong_explicit, atomic_store)
4607 (atomic_exchange, atomic_compare_exchange_weak)
4608 (atomic_compare_exchange_strong): Use __atomic_val_t to make
4609 scalar parameters be non-deduced contexts.
4610 (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
4611 (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
4612 atomic instead of __atomic_base, and use __atomic_diff_t for scalar
4614 (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
4615 (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
4616 (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
4617 (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
4618 (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
4620 * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
4621 * testsuite/29_atomics/atomic/69769.cc: New test.
4622 * testsuite/29_atomics/atomic/nonmembers.cc: New test.
4623 * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
4624 Disable test for C++17 and later.
4625 * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
4626 * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
4627 * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
4630 2018-05-23 Jonathan Wakely <jwakely@redhat.com>
4632 * include/bits/fs_path.h (path::__is_encoded_char): Change from class
4633 template to alias template.
4634 (path::__value_type_is_char): Use remove_const_t.
4635 (path:_S_string_from_iter): New helper function.
4636 (path::_S_convert(InputIter, __null_terminated))
4637 (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
4638 Use _S_string_from_iter.
4639 (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
4640 rep for COW strings.
4641 * include/experimental/bits/fs_path.h (path::__is_encoded_char):
4642 Change from class template to alias template.
4643 (path::__value_type_is_char): Use remove_const.
4644 (path:_S_string_from_iter): New helper function.
4645 (path::_S_convert(InputIter, __null_terminated))
4646 (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
4647 Use _S_string_from_iter.
4648 * testsuite/27_io/filesystem/path/append/source.cc: Test appending
4650 * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
4651 string equality, not path equivalence.
4652 * testsuite/27_io/filesystem/path/construct/format.cc: Check
4653 construction from std::string and std::wstring and input iterators.
4654 * testsuite/27_io/filesystem/path/construct/locale.cc: Check
4655 construction from iterators.
4656 * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
4657 exact string equality, not path equivalence.
4658 * testsuite/experimental/filesystem/path/construct/locale.cc: Check
4659 construction from iterators.
4661 * include/bits/fs_path.h (path::_M_type): Change default member
4662 initializer to _Filename.
4663 (path::begin): Create past-the-end iterator for empty path.
4664 * src/filesystem/std-path.cc (path::remove_filename()): Remove
4666 (path::has_relative_path()): Return false for empty filenames.
4667 (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
4668 Fix offset of empty final component.
4669 * testsuite/27_io/filesystem/path/itr/components.cc: New.
4670 * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
4672 2018-05-21 Jonathan Wakely <jwakely@redhat.com>
4674 Add support for opening file streams from wide character strings.
4675 * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
4676 (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
4677 Define new overload.
4678 * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
4679 (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
4680 Declare new overload.
4681 * configure.ac: Check for _wfopen.
4682 * crossconfig.m4: Likewise.
4683 * configure: Regenerate.
4684 * config.h.in: Regenerate.
4685 * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
4686 (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
4687 Define new overload.
4688 * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
4689 (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
4690 Declare new overload.
4691 [_GLIBCXX_HAVE__WFOPEN]
4692 (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
4693 (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
4694 (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
4695 (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
4696 (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
4697 (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
4699 * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
4700 * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
4701 * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
4702 * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
4703 * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
4704 * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
4705 * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
4707 2018-05-21 François Dumont <fdumont@gcc.gnu.org>
4710 * include/bits/stl_tree.h
4711 (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
4714 2018-05-21 Jonathan Wakely <jwakely@redhat.com>
4716 * src/filesystem/std-ops.cc (absolute): Report an error for empty
4718 (weakly_canonical(const path&)): Do not call canonical on empty path.
4719 (weakly_canonical(const path&, error_code&)): Likewise.
4720 * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
4723 * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
4724 dg-require-filesystem-ts.
4727 * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
4728 initialize base class to avoid warnings.
4730 2018-05-19 Jonathan Wakely <jwakely@redhat.com>
4732 * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
4733 [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
4734 little_endian element in bitmask.
4735 * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
4736 * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
4738 2018-05-18 François Dumont <fdumont@gcc.gnu.org>
4740 * include/bits/stl_tree.h
4741 (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
4742 (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
4743 (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
4744 (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
4745 * include/debug/map.h
4746 (map(map&&, const_allocator_type&)): Add noexcept qualitication.
4747 * include/debug/multimap.h
4748 (multimap(multimap&&, const_allocator_type&)): Likewise.
4749 * include/debug/set.h
4750 (set(set&&, const_allocator_type&)): Likewise.
4751 * include/debug/multiset.h
4752 (multiset(multiset&&, const_allocator_type&)): Likewise.
4753 * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
4755 * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
4757 * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
4759 * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
4761 * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
4763 * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
4765 * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
4767 * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
4770 2018-05-18 Jason Merrill <jason@redhat.com>
4772 * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
4773 for conversion to const_iterator. Add defaulted copy ops.
4774 * libsupc++/new (bad_alloc): Add defaulted copy ops.
4775 * libsupc++/exception.h (exception): Add defaulted copy ops.
4776 * include/std/system_error (system_error): Add defaulted copy ops.
4777 * include/std/stdexcept (domain_error, invalid_argument)
4778 (length_error, out_of_range, range_error, overflow_error)
4779 (underflow_error): Add defaulted copy ops.
4780 * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
4782 * include/bits/allocator.h (allocator): Add defaulted copy assignment.
4783 * include/ext/throw_allocator.h (condition_base): Add defaulted
4784 default and copy ctor and copy assignment.
4786 2018-05-18 Jonathan Wakely <jwakely@redhat.com>
4789 * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
4790 (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
4791 (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
4792 (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
4794 * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
4796 * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
4797 braces around body of do-while.
4798 * testsuite/28_regex/basic_regex/85098.cc: New
4800 2018-05-17 Jonathan Wakely <jwakely@redhat.com>
4803 * src/filesystem/path.cc (path::preferred_separator): Add used
4805 * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
4808 * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
4809 * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
4810 Refactor to separate non-throwing and throwing implementations.
4811 [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
4812 if constructing the object throws.
4814 2018-05-15 Jonathan Wakely <jwakely@redhat.com>
4817 * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
4818 (linear_congruential_engine, mersenne_twister_engine)
4819 (subtract_with_carry_engine, discard_block_engine)
4820 (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
4821 constrain function templates taking seed sequences.
4822 * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
4823 (mersenne_twister_engine::seed(_Sseq&))
4824 (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
4826 * include/ext/random (simd_fast_mersenne_twister_engine): Use
4827 __is_seed_seq to constrain function templates taking seed sequences.
4828 * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
4829 Change return type to match declaration.
4830 * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
4832 * testsuite/26_numerics/random/independent_bits_engine/cons/
4834 * testsuite/26_numerics/random/linear_congruential_engine/cons/
4836 * testsuite/26_numerics/random/mersenne_twister_engine/cons/
4838 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
4839 * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
4841 * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
4843 * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
4847 * include/bits/fs_path.h (path::is_absolute()): Use same definition
4848 for all operating systems.
4849 * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
4850 * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
4851 * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
4852 * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
4854 * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
4855 unused <vector> header.
4856 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
4857 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
4858 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
4859 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
4860 * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
4862 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
4864 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
4865 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
4866 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
4867 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
4868 * testsuite/experimental/filesystem/path/decompose/extension.cc:
4870 * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
4871 * testsuite/experimental/filesystem/path/query/has_extension.cc:
4873 * testsuite/experimental/filesystem/path/query/has_filename.cc:
4875 * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
4877 * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
4879 * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
4881 * testsuite/experimental/filesystem/path/query/has_root_name.cc:
4883 * testsuite/experimental/filesystem/path/query/has_root_path.cc:
4885 * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
4886 * testsuite/experimental/filesystem/path/query/is_relative.cc:
4890 * include/bits/fs_path.h (path::operator/=, path::append): Construct
4891 temporary path before calling _M_append.
4892 (path::_M_append): Change parameter to path and implement C++17
4894 * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
4895 and more examples from the standard.
4896 * testsuite/27_io/filesystem/path/append/source.cc: New.
4897 * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
4898 * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
4900 * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
4901 __invoke to prevent ADL.
4903 2018-05-14 Jonathan Wakely <jwakely@redhat.com>
4906 * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
4907 exceptions from _M_terminate_output().
4908 * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
4909 exceptions from close().
4910 * testsuite/27_io/basic_filebuf/close/81256.cc: New.
4912 * include/bits/valarray_array.h (__valarray_get_memory): Remove.
4913 (__valarray_get_storage): Call operator new directly. Remove ignored
4914 top-level restrict qualifier and add malloc attribute instead.
4915 (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
4918 * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
4919 (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
4922 * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
4924 * testsuite/23_containers/set/modifiers/node_swap.cc: New.
4926 2018-05-13 Ville Voutilainen <ville.voutilainen@gmail.com>
4929 * testsuite/20_util/variant/80165.cc: New.
4931 2018-05-10 Jonathan Wakely <jwakely@redhat.com>
4933 * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
4934 * doc/xml/manual/debug_mode.xml: Add array and forward_list to list
4935 of C++11 containers with Debug Mode support.
4936 * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
4937 * doc/html/*: Regenerate.
4939 2018-05-10 Jason Merrill <jason@redhat.com>
4941 * include/bits/regex_compiler.h (_S_cache_size): Change from
4942 function to variable.
4944 2018-05-10 Edward Smith-Rowland <3dw4rd@verizon.net>
4946 PR libstdc++/83140 - assoc_legendre returns negated value when m is odd
4947 * include/tr1/legendre_function.tcc (__assoc_legendre_p): Add __phase
4948 argument defaulted to +1. Doxy comments on same.
4949 * testsuite/special_functions/02_assoc_legendre/
4950 check_value.cc: Regen.
4951 * testsuite/tr1/5_numerical_facilities/special_functions/
4952 02_assoc_legendre/check_value.cc: Regen.
4954 2018-05-10 Jonathan Wakely <jwakely@redhat.com>
4957 * include/bits/c++config.h (__replacement_assert): Add linkage
4959 * include/bits/std_abs.h: Add comment to closing brace of block.
4960 * include/c_global/cstddef: Add linkage specification.
4961 * include/c_global/cstring: Likewise.
4962 * include/c_global/cwchar: Likewise.
4964 2018-05-09 François Dumont <fdumont@gcc.gnu.org>
4966 * include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant()):
4968 (_Safe_iterator<>::_S_constant()): ...that.
4969 * include/debug/safe_local_iterator.h
4970 (_Safe_local_iterator<>::_M_constant()): Rename in...
4971 (_Safe_local_iterator<>::_S_constant()): ...that.
4972 * include/debug/formatter.h: Remove bits/cpp_type_traits.h include.
4973 (_Iterator_state::__rbegin): New.
4974 (_Iterator_state::__rmiddle): New.
4975 (_Iterator_state::__rend): New.
4976 (_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
4977 _Is_iterator)): Use _Safe_iterator<>::_S_constant. Grab normal underlying
4979 (_Parameter::_Parameter(const _Safe_local_iterator<>&, const char*,
4980 _Is_iterator)): Likewise.
4981 (_Parameter::_S_reverse_state(_Iterator_state)): New.
4982 (_Parameter(__gnu_cxx::__normal_iterator<> const&, const char*,
4983 _Is_iterator)): New.
4984 (_Parameter(std::reverse_iterator<> const&, const char*,
4985 _Is_iterator)): New.
4986 (_Parameter(std::reverse_iterator<_Safe_iterator<>> const&,
4987 const char*, _Is_iterator)): New.
4988 (_Parameter(std::move_iterator<> const&, const char*, _Is_iterator):
4990 (_Parameter(std::move_iterator<_Safe_iterator<>> const&, const char*,
4991 _Is_iterator)): New.
4992 * testsuite/24_iterators/move_iterator/debug_neg.cc: New.
4993 * testsuite/24_iterators/normal_iterator/debug_neg.cc: New.
4994 * testsuite/24_iterators/reverse_iterator/debug_neg.cc: New.
4996 2018-05-09 Jonathan Wakely <jwakely@redhat.com>
4998 * include/bits/std_function.h (_Base_manager::_M_get_pointer):
4999 Use constexpr if in C++17 mode.
5000 (_Base_manager::_M_clone(_Any_data&, const _Any_data&, true_type)):
5001 Copy from const object.
5002 * testsuite/20_util/function/cons/non_copyconstructible.cc: New.
5004 2018-05-08 François Dumont <fdumont@gcc.gnu.org>
5006 * src/c++11/debug.cc [_GLIBCXX_HAVE_EXECINFO_H]: Include execinfo.h.
5007 [_GLIBCXX_HAVE_EXECINFO_H](_Error_formatter::_M_error): Render
5010 * include/debug/macros.h (__glibcxx_check_valid_range_at): New.
5011 * include/debug/functions.h (__check_valid_range): Use latter.
5012 * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
5014 * include/debug/deque
5015 (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
5016 * include/debug/forward_list
5017 (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
5019 * include/debug/list
5020 (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5021 * include/debug/list
5022 (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5023 * include/debug/map.h
5024 (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5025 (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
5027 * include/debug/multimap.h
5028 (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5029 (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
5030 const _Alloc&)): Likewise.
5031 * include/debug/set.h
5032 (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5033 (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
5035 * include/debug/multiset.h
5036 (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
5037 (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
5038 const _Alloc&)): Likewise.
5039 * include/debug/string
5040 (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
5042 * include/debug/unordered_map
5043 (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
5045 (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
5046 const _Alloc&)): Likewise.
5047 * include/debug/unordered_set
5048 (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
5050 (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
5051 const _Alloc&)): Likewise.
5052 * include/debug/vector
5053 (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
5055 * include/debug/formatter.h (_Error_formatter::_M_function): New.
5056 (_Error_formatter(const char*, unsigned int)): Adapt.
5057 (_Error_formatter::_M_at): Rename in...
5058 (_Error_formatter::_S_at): ...that and adapt.
5059 * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): New.
5060 (_GLIBCXX_DEBUG_VERIFY_AT, _GLIBCXX_DEBUG_VERIFY): Adapt.
5061 * src/c++11/debug.cc (_Error_formatter::_M_error): Render _M_function
5064 2018-05-08 Jonathan Wakely <jwakely@redhat.com>
5066 * include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
5067 Use normal std::vector even in Debug Mode.
5070 * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
5071 to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
5072 * include/Makefile.in: Regenerate.
5073 * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
5074 within conditional block.
5076 2018-05-07 Jonathan Wakely <jwakely@redhat.com>
5078 * doc/xml/manual/using.xml (table.cmd_options): Document that the
5079 C++17 Filesystem implementation also needs -lstdc++fs.
5082 * include/bits/fs_path.h (operator/): Permit copy elision.
5083 * include/experimental/bits/fs_path.h (operator/): Likewise.
5085 2018-05-07 Edward Smith-Rowland <3dw4rd@verizon.net>
5087 Moar PR libstdc++/80506
5088 * include/bits/random.tcc (gamma_distribution::__generate_impl()):
5089 Fix magic number used in loop condition.
5091 2018-05-04 Jonathan Wakely <jwakely@redhat.com>
5093 PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
5094 * include/std/optional (_Optional_payload): Add noexcept to default
5095 constructor. Re-indent.
5096 (_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
5097 constructor for copying disengaged payloads.
5098 (_Optional_payload<_Tp, true, false, true>): Likewise.
5099 (_Optional_payload<_Tp, true, true, false>): Likewise.
5100 (_Optional_payload<_Tp, true, false, false>): Likewise.
5101 * testsuite/20_util/optional/cons/85642.cc: New.
5102 * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.
5104 2018-05-03 Jonathan Wakely <jwakely@redhat.com>
5107 * include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
5108 inline definitions instead of using-declarations.
5109 [__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
5110 * testsuite/tr1/5_numerical_facilities/special_functions/
5111 07_conf_hyperg/compile_cxx17.cc: New.
5112 * testsuite/tr1/5_numerical_facilities/special_functions/
5113 17_hyperg/compile_cxx17.cc: New.
5116 * include/std/variant (visit): Qualify std::get call.
5118 PR libstdc++/85632 use uintmax_t for arithmetic
5119 * src/filesystem/ops.cc (experimental::filesystem::space): Perform
5120 arithmetic in result type.
5121 * src/filesystem/std-ops.cc (filesystem::space): Likewise.
5122 * testsuite/27_io/filesystem/operations/space.cc: Check total capacity
5123 is greater than free space.
5124 * testsuite/experimental/filesystem/operations/space.cc: New.
5126 * testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
5127 * testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
5129 * testsuite/20_util/remove_cvref/value.cc: New.
5130 * testsuite/20_util/remove_cvref/value_ext.cc: New.
5132 PR libstdc++/84087 LWG DR 2268 basic_string default arguments
5133 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
5134 (append(const basic_string&, size_type, size_type)
5135 (assign(const basic_string&, size_type, size_type)
5136 (insert(size_type, const basic_string&, size_type, size_type)
5137 (replace(size_type,size_type,const basic_string&,size_type,size_type)
5138 (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
5139 Add default arguments (LWG 2268).
5140 [_GLIBCXX_USE_CXX11_ABI=0]
5141 (append(const basic_string&, size_type, size_type)
5142 (assign(const basic_string&, size_type, size_type)
5143 (insert(size_type, const basic_string&, size_type, size_type)
5144 (replace(size_type,size_type,const basic_string&,size_type,size_type)
5145 (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
5147 * testsuite/21_strings/basic_string/dr2268.cc: New test.
5150 * include/std/thread (thread::__not_same): New SFINAE helper.
5151 (thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
5152 first argument is not a std::thread. Add static assertion to check
5153 INVOKE expression is valid.
5154 (thread::thread(thread&), thread::thread(const thread&&)): Remove.
5155 (thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
5156 __invoke_result for return types and remove exception specifications.
5157 * testsuite/30_threads/thread/cons/84535.cc: New.
5159 * include/std/future (__async_result_of): Use __invoke_result instead
5162 * include/std/any (any_cast): Use __remove_cvref_t.
5163 * include/std/tuple (__make_tuple): Likewise.
5164 * include/std/type_traits (__remove_cvref_t): Define.
5165 (__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
5166 [__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
5167 * include/std/variant (__erased_hash): Use __remove_cvref_t.
5169 2018-05-02 François Dumont <fdumont@gcc.gnu.org>
5171 * include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
5172 ensure overloaded comma not used.
5173 * include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
5174 * include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
5175 * include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
5176 * testsuite/23_containers/deque/modifiers/assign/1.cc: New.
5177 * testsuite/23_containers/list/modifiers/assign/1.cc: New.
5178 * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
5179 * testsuite/23_containers/vector/modifiers/assign/1.cc: New.
5181 2018-05-02 Jonathan Wakely <jwakely@redhat.com>
5184 * include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
5185 indices to unsigned.
5186 * src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
5187 as failure. Refactor error handling.
5188 * testsuite/27_io/ios_base/storage/68197.cc: New.
5192 * include/bits/gslice_array.h (gslice_array): Define default
5193 constructor as deleted, as per C++11 standard.
5194 * include/bits/mask_array.h (mask_array): Likewise.
5195 * include/bits/slice_array.h (slice_array): Likewise.
5196 * include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
5197 to namespace __detail.
5198 (_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
5200 * include/bits/valarray_before.h (_ValArrayRef): New helper for type
5201 of data members in closure objects.
5202 (_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
5203 (_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
5205 (_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
5206 (_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
5207 (_SBase::_M_expr): Use _ValArrayRef for type of data members.
5208 * include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
5209 (_ValFunClos, _RefFunClos): Move to namespace __detail and add
5210 using-declarations to namespace std.
5211 * testsuite/26_numerics/valarray/83860.cc: New.
5213 * testsuite/backward/strstream_move.cc: Remove duplicate function
5217 * include/backward/strstream (strstreambuf): Define move constructor
5218 and move assignment operator.
5219 (istrstream, ostrstream, strstream): Likewise.
5220 * testsuite/backward/strstream_move.cc: New.
5222 2018-05-01 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
5225 * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
5226 * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
5227 * configure: Regenerate.
5228 * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
5229 based on ENABLE_FLOAT128.
5230 * include/Makefile.in: Regenerate.
5231 * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
5232 [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
5233 _GLIBCXX_USE_FLOAT128.
5235 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
5237 * configure: Regenerated.
5239 2018-04-19 Jakub Jelinek <jakub@redhat.com>
5241 * configure: Regenerated.
5243 2018-04-18 Jonathan Wakely <jwakely@redhat.com>
5244 Jakub Jelinek <jakub@redhat.com>
5247 * src/c++11/Makefile.am: Don't generate debuginfo again for
5248 cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
5249 * src/c++11/Makefile.in: Regenerate.
5251 2018-04-18 Jonathan Wakely <jwakely@redhat.com>
5254 * testsuite/30_threads/thread/cons/terminate.cc
5255 [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
5257 2018-04-18 David Malcolm <dmalcolm@redhat.com>
5260 * configure: Regenerate.
5262 2018-04-16 Jonathan Wakely <jwakely@redhat.com>
5264 * testsuite/experimental/filesystem/file_status/1.cc: Add
5265 -DUSE_FILESYSTEM_TS to dg-options.
5266 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
5268 * testsuite/experimental/filesystem/iterators/pop.cc: Likewise.
5269 * testsuite/experimental/filesystem/iterators/
5270 recursive_directory_iterator.cc: Likewise.
5271 * testsuite/experimental/filesystem/operations/absolute.cc: Likewise.
5272 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
5273 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
5274 * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
5275 * testsuite/experimental/filesystem/operations/create_directories.cc:
5277 * testsuite/experimental/filesystem/operations/create_directory.cc:
5279 * testsuite/experimental/filesystem/operations/create_symlink.cc:
5281 * testsuite/experimental/filesystem/operations/current_path.cc:
5283 * testsuite/experimental/filesystem/operations/equivalent.cc: Likewise.
5284 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
5285 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
5286 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
5287 * testsuite/experimental/filesystem/operations/last_write_time.cc:
5289 * testsuite/experimental/filesystem/operations/permissions.cc:
5291 * testsuite/experimental/filesystem/operations/read_symlink.cc:
5293 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
5294 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
5295 * testsuite/experimental/filesystem/operations/status.cc: Likewise.
5296 * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
5298 * testsuite/experimental/filesystem/path/append/path.cc: Likewise.
5299 * testsuite/experimental/filesystem/path/assign/assign.cc: Likewise.
5300 * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
5301 * testsuite/experimental/filesystem/path/compare/compare.cc: Likewise.
5302 * testsuite/experimental/filesystem/path/compare/path.cc: Likewise.
5303 * testsuite/experimental/filesystem/path/compare/strings.cc: Likewise.
5304 * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
5305 * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
5306 * testsuite/experimental/filesystem/path/construct/copy.cc: Likewise.
5307 * testsuite/experimental/filesystem/path/construct/default.cc:
5309 * testsuite/experimental/filesystem/path/construct/locale.cc: Likewise.
5310 * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
5311 * testsuite/experimental/filesystem/path/construct/string_view.cc:
5313 * testsuite/experimental/filesystem/path/decompose/extension.cc:
5315 * testsuite/experimental/filesystem/path/decompose/filename.cc:
5317 * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
5319 * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
5321 * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
5323 * testsuite/experimental/filesystem/path/decompose/root_name.cc:
5325 * testsuite/experimental/filesystem/path/decompose/root_path.cc:
5327 * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
5328 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
5330 * testsuite/experimental/filesystem/path/itr/traversal.cc: Likewise.
5331 * testsuite/experimental/filesystem/path/modifiers/clear.cc: Likewise.
5332 * testsuite/experimental/filesystem/path/modifiers/make_preferred.cc:
5334 * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
5336 * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
5338 * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
5340 * testsuite/experimental/filesystem/path/modifiers/swap.cc: Likewise.
5341 * testsuite/experimental/filesystem/path/native/string.cc: Likewise.
5342 * testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
5344 * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
5345 * testsuite/experimental/filesystem/path/query/has_extension.cc:
5347 * testsuite/experimental/filesystem/path/query/has_filename.cc:
5349 * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
5351 * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
5353 * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
5355 * testsuite/experimental/filesystem/path/query/has_root_name.cc:
5357 * testsuite/experimental/filesystem/path/query/has_root_path.cc:
5359 * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
5360 * testsuite/experimental/filesystem/path/query/is_relative.cc:
5363 2018-04-13 Jonathan Wakely <jwakely@redhat.com>
5365 * src/c++11/Makefile.am: Fix sed command.
5366 * src/c++11/Makefile.in: Regenerate.
5368 * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
5369 handle mangled names starting with double underscores on darwin.
5370 * src/c++11/Makefile.in: Regenerate.
5372 2018-04-12 Jonathan Wakely <jwakely@redhat.com>
5374 * src/c++11/Makefile.am: Fix comment.
5375 * src/c++11/Makefile.in: Regenerate.
5376 * src/c++11/cxx11-ios_failure.cc: Fix comment.
5377 * src/c++98/ios_failure.cc: Likewise.
5379 * src/c++11/ios.cc: Remove redundant macro definition.
5381 2018-04-11 Jonathan Wakely <jwakely@redhat.com>
5383 * doc/xml/manual/abi.xml: Document header locations in recent
5385 * doc/xml/manual/evolution.xml: Add API changes since GCC 5.
5386 * doc/xml/manual/spine.xml: Update copyright years.
5387 * doc/xml/manual/strings.xml: Adjust tolower example to avoid
5388 undefined behaviour.
5389 * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
5390 * doc/html/*: Regenerate.
5392 2018-04-10 Jonathan Wakely <jwakely@redhat.com>
5394 * doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
5395 * doc/xml/manual/backwards_compatibility.xml: Likewise.
5396 * doc/xml/manual/containers.xml: Likewise.
5397 * doc/xml/manual/debug_mode.xml: Likewise.
5398 * doc/xml/manual/extensions.xml: Likewise.
5399 * doc/xml/manual/policy_data_structures_biblio.xml: Likewise.
5400 * doc/xml/manual/using.xml: Likewise.
5401 * doc/xml/manual/utilities.xml: Likewise.
5404 * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
5405 cxx11-ios_failure.cc to rewrite type info for __ios_failure.
5406 * src/c++11/Makefile.in: Regenerate.
5407 * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
5409 [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
5410 * src/c++11/ios.cc (__throw_ios_failure): Remove definition.
5411 * src/c++98/ios_failure.cc (__construct_ios_failure)
5412 (__destroy_ios_failure, is_ios_failure_handler): New functions.
5413 [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
5414 * testsuite/27_io/ios_base/failure/dual_abi.cc: New.
5415 * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
5416 handler types, to always catch std::ios_base::failure.
5417 * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
5418 * testsuite/27_io/basic_istream/extractors_arithmetic/char/
5419 exceptions_failbit.cc: Likewise.
5420 * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
5421 exceptions_failbit.cc: Likewise.
5422 * testsuite/27_io/basic_istream/extractors_other/char/
5423 exceptions_null.cc: Likewise.
5424 * testsuite/27_io/basic_istream/extractors_other/wchar_t/
5425 exceptions_null.cc: Likewise.
5426 * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
5427 * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
5428 * testsuite/27_io/basic_ostream/inserters_other/char/
5429 exceptions_null.cc: Likewise.
5430 * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
5431 exceptions_null.cc: Likewise.
5432 * testsuite/27_io/ios_base/storage/2.cc: Likewise.
5434 2018-04-05 Jonathan Wakely <jwakely@redhat.com>
5436 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
5437 __get calls to avoid ADL and avoid ambiguity due to Clang bug.
5439 2018-04-03 Jonathan Wakely <jwakely@redhat.com>
5442 * include/std/variant (_Move_assign_base::operator=): Fix incorrect
5444 * testsuite/20_util/variant/85183.cc: New.
5446 2018-03-26 Jonathan Wakely <jwakely@redhat.com>
5448 * include/std/variant (__get): Qualify calls to avoid ADL.
5449 (__select_index): Adjust whitespace.
5450 (variant): Add using-declaration to workaround Clang bug.
5452 2018-03-22 Jonathan Wakely <jwakely@redhat.com>
5455 * include/bits/stl_function.h (greater::__not_overloaded)
5456 (less::__not_overloaded, greater_equal::__not_overloaded)
5457 (less_equal::__not_overloaded): Fix ambiguous specializations.
5458 * testsuite/20_util/function_objects/comparisons_pointer.cc: Add
5459 tests for type with overloaded operators.
5461 2018-03-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
5464 * testsuite/experimental/memory_resource/resource_adaptor.cc:
5465 xfail execution on 32-bit Solaris/x86.
5467 2018-03-21 Jonathan Wakely <jwakely@redhat.com>
5469 * testsuite/20_util/function_objects/comparisons_pointer.cc: Use
5470 VERIFY instead of assert.
5471 * testsuite/20_util/hash/84998.cc: New test.
5472 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
5473 copy of test adjusted for Debug Mode.
5474 * testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
5477 2018-03-20 François Dumont <fdumont@gcc.gnu.org>
5480 * include/bits/stl_bvector.h: Fix std::hash friend declaration.
5481 * include/std/bitset: Likewise.
5482 * include/bits/stl_map.h (std::map<>): Fix _Rb_tree_merge_helper friend
5484 * include/bits/stl_multimap.h (std::multimap<>): Likewise.
5485 * include/bits/stl_multiset.h (std::multiset<>): Likewise.
5486 * include/bits/stl_set.h (std::set<>): Likewise.
5487 * include/bits/unordered_map.h (std::unordered_map<>): Fix
5488 _Hash_merge_helper friend declaration.
5489 (std::unordered_multimap<>): Likewise.
5490 * include/bits/unordered_set.h (std::unordered_set<>): Likewise.
5491 (std::unordered_multiset<>): Likewise.
5493 2018-03-19 Gerald Pfeifer <gerald@pfeifer.com>
5495 * doc/xml/api.xml: www.fsf.org has moved to https. Also omit
5496 trailing slash for domain level link.
5497 * doc/xml/faq.xml: Ditto.
5498 * doc/xml/manual/appendix_free.xml (software): Ditto.
5499 * doc/xml/manual/intro.xml: Ditto.
5500 * doc/xml/manual/spine.xml: Ditto.
5501 * doc/xml/spine.xml: Ditto.
5503 2018-03-19 Gerald Pfeifer <gerald@pfeifer.com>
5505 * doc/xml/manual/documentation_hacking.xml: Adjust link to
5508 2018-03-17 Jonathan Wakely <jwakely@redhat.com>
5510 * testsuite/20_util/function_objects/comparisons_pointer.cc: Adjust
5511 to compile as C++98.
5513 2018-03-14 Jonathan Wakely <jwakely@redhat.com>
5516 * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
5517 (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
5518 to ensure total order for pointers.
5519 (greater<void>, less<void>, greater_equal<void>, less_equal<void>):
5520 Add operator() overloads for pointer arguments and make generic
5521 overloads dispatch to new _S_cmp functions when comparisons would
5522 use built-in operators for pointers.
5523 * testsuite/20_util/function_objects/comparisons_pointer.cc: New.
5525 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
5529 * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
5530 * configure: Regenerate.
5531 * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
5532 (aligned_alloc): Add using-declaration.
5533 * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
5535 2018-03-09 François Dumont <fdumont@gcc.gnu.org>
5537 * python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
5538 Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
5541 2018-03-09 Jonathan Wakely <jwakely@redhat.com>
5544 * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
5545 Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
5547 src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
5548 src/filesystem/std-ops.cc (create_dir): Likewise.
5550 2018-03-08 François Dumont <fdumont@gcc.gnu.org>
5552 * python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
5553 (StdListIteratorPrinter): Inherit from latter.
5554 (StdFwdListIteratorPrinter): New, inherit from latter.
5555 (StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
5556 when iterator has no associated container.
5557 (build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
5558 __gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
5560 * testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
5561 * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
5563 2018-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
5566 * include/std/optional (_Optional_payload): Split into multiple
5567 specializations that can handle different cases of trivial or
5568 non-trivial assignment operators.
5569 * testsuite/20_util/optional/84601.cc: New.
5570 * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
5572 2018-03-02 Jonathan Wakely <jwakely@redhat.com>
5575 * include/bits/parse_numbers.h (_Number_help): Add partial
5576 specialization to handle digit separators. Adjust partial
5577 specialization for recursion temrination to require _Pow == 1ULL.
5578 * testsuite/20_util/duration/literals/84671.cc: New
5580 2018-02-27 Ville Voutilainen <ville.voutilainen@gmail.com>
5582 Implement the missing bits of LWG 2769
5583 * include/std/any (any_cast(const any&)): Add static_assert.
5584 (any_cast(any&)): Likewise.
5585 (any_cast(any&&)): Likewise, and remove the handling
5586 for copyable-but-not-movable type.
5587 * testsuite/20_util/any/misc/any_cast.cc: Adjust.
5588 * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
5591 2018-02-23 Jonathan Wakely <jwakely@redhat.com>
5594 * include/std/thread (thread::__make_invoker): Construct tuple
5595 directly instead of using make_tuple.
5596 * testsuite/30_threads/async/84532.cc: New.
5597 * testsuite/30_threads/thread/84532.cc: New.
5599 2018-02-20 François Dumont <fdumont@gcc.gnu.org>
5601 * include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
5602 (template<> __aligned_buffer): Define as __aligned_membuf alias.
5604 2018-02-19 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
5607 * configure: Regenerate.
5609 2018-02-15 Jonathan Wakely <jwakely@redhat.com>
5612 * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
5613 * configure: Regenerate.
5614 * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
5616 * include/Makefile.in: Regenerate.
5618 2018-01-29 Jonathan Wakely <jwakely@redhat.com>
5621 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
5622 Add -ffloat-store to options for m68k and ia32.
5624 * doc/xml/faq.xml: Update copyright years.
5625 * doc/html/*: Regenerate.
5628 * include/std/any (any::__do_emplace): Only set _M_manager after
5629 constructing the contained object.
5630 * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
5631 * testsuite/20_util/any/modifiers/83658.cc: New test.
5633 2018-01-25 Jonathan Wakely <jwakely@redhat.com>
5636 * include/c_global/cstddef (__byte_operand): Define primary template.
5637 * testsuite/18_support/byte/81076.cc: New test.
5639 2018-01-19 Christophe Lyon <christophe.lyon@linaro.org>
5641 * testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
5642 dg-options and dg-add-options order.
5643 * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
5644 * testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
5646 * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
5647 * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
5649 * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
5651 * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
5652 * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
5654 * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
5656 * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
5658 * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
5660 * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
5662 * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
5664 * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
5666 * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
5668 * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
5669 * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
5670 * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
5671 * testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
5672 * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
5673 * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
5674 * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
5675 * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
5676 * testsuite/special_functions/18_riemann_zeta/check_nan.cc:
5678 * testsuite/special_functions/19_sph_bessel/check_nan.cc:
5680 * testsuite/special_functions/20_sph_legendre/check_nan.cc:
5682 * testsuite/special_functions/21_sph_neumann/check_nan.cc:
5685 2018-01-18 Uros Bizjak <ubizjak@gmail.com>
5687 * configure.ac (AC_CHECK_HEADERS): Add linux/types.h. Conditionally
5688 include linux/types.h when checking linux/random.h header.
5689 * config.h.in: Regenerate.
5691 * src/c++11/random.cc: Conditionally include linux/types.h.
5693 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
5695 * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
5697 2018-01-16 Jonathan Wakely <jwakely@redhat.com>
5700 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
5701 pattern with exact match for std::cerr.
5703 2018-01-15 Jonathan Wakely <jwakely@redhat.com>
5706 * include/bits/random.h (chi_squared_distribution::param): Update
5707 gamma distribution parameter.
5708 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
5712 * include/std/type_traits (has_unique_object_representations_v): Add
5714 * testsuite/20_util/has_unique_object_representations/value.cc: Check
5717 2018-01-15 Ville Voutilainen <ville.voutilainen@gmail.com>
5719 Make optional conditionally
5720 trivially_{copy,move}_{constructible,assignable}
5721 * include/std/optional (_Optional_payload): Fix the comment in
5722 the class head and turn into a primary and one specialization.
5723 (_Optional_payload::_M_engaged): Strike the NSDMI.
5724 (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
5726 (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
5728 (_Optional_payload<_Tp, false>::_M_get): Likewise.
5729 (_Optional_payload<_Tp, false>::_M_reset): Likewise.
5730 (_Optional_base_impl): Likewise.
5731 (_Optional_base): Turn into a primary and three specializations.
5732 (optional(nullopt)): Change the base init.
5733 * testsuite/20_util/optional/assignment/8.cc: New.
5734 * testsuite/20_util/optional/cons/trivial.cc: Likewise.
5735 * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
5737 2018-01-15 Jonathan Wakely <jwakely@redhat.com>
5740 * python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
5741 (get_template_arg_list): New.
5742 (StdVariantPrinter._template_args): Remove, use get_template_arg_list
5744 (TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
5745 of strings and regular expressions.
5746 (add_one_template_type_printer): Adapt to new TemplateTypePrinter.
5747 (FilteringTypePrinter): Add docstring. Match using startswith. Use
5748 strip_inline_namespaces instead of strip_versioned_namespace.
5749 (add_one_type_printer): Prepend namespace to match argument.
5750 (register_type_printers): Add type printers for char16_t and char32_t
5751 string types and for types using cxx11 ABI. Update calls to
5752 add_one_template_type_printer to provide default argument dicts.
5753 * testsuite/libstdc++-prettyprinters/80276.cc: New test.
5754 * testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
5755 basic_string<unsigned char> and basic_string<signed char>.
5756 * testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
5757 to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
5759 2018-01-14 Andreas Schwab <schwab@linux-m68k.org>
5762 * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
5764 2018-01-13 Tim Shen <timshen@google.com>
5767 * include/bits/regex.tcc (regex_replace): Fix escaping in sed.
5768 * testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
5769 * testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
5771 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
5774 * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
5775 Remove dg-xfail-run-if.
5777 2018-01-10 François Dumont <fdumont@gcc.gnu.org>
5779 * include/bits/forward_list.h
5780 (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
5781 (_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
5782 (_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
5783 (_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
5784 (_Fwd_list_impl()): Add noexcept qualification.
5785 (_Fwd_list_impl(const _Node_alloc_type&)): Delete.
5786 (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
5787 (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
5788 (_Fwd_list_base()): Default.
5789 (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
5790 (_Fwd_list_base(_Fwd_list_base&&)): Default.
5791 (forward_list<>()): Default.
5792 (forward_list<>(forward_list&&)): Default.
5793 (forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
5794 (forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
5795 (forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
5796 * include/bits/forward_list.tcc
5797 (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
5798 _M_impl._M_head move assignment.
5799 (forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
5800 * testsuite/23_containers/forward_list/allocator/default_init.cc: New.
5802 2018-01-09 Jonathan Wakely <jwakely@redhat.com>
5805 * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
5806 (UniquePointerPrinter): Print correct template argument, not type of
5808 (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
5810 * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
5812 * testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
5813 weak_ptr of array types.
5815 2018-01-09 François Dumont <fdumont@gcc.gnu.org>
5818 * include/bits/hashtable_policy.h
5819 (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
5821 (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
5822 (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
5823 Add false_type parameter.
5824 (_Insert_base::insert): Adapt.
5825 * include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
5827 (_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
5828 Add __n_elt parameter, defaulted to 1.
5829 (_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
5830 policy _M_need_rehash.
5831 (_Hashtable::_M_merge_unique): Pass target number of elements to add to
5832 produce only 1 rehash if necessary.
5833 * testsuite/23_containers/unordered_map/insert/83709.cc: New.
5834 * testsuite/23_containers/unordered_set/insert/83709.cc: New.
5836 2018-01-09 Juraj Oršulić <juraj.orsulic@fer.hr>
5837 Jonathan Wakely <jwakely@redhat.com>
5839 PR libstdc++/59253 (partial)
5840 * python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
5841 type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
5842 (SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
5844 * testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
5845 of unique_ptr printer.
5846 * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
5847 output of shared_ptr printer.
5849 2018-01-05 Jonathan Wakely <jwakely@redhat.com>
5852 * src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
5853 unnecessary symlink_status call.
5854 (remove_all(const path&, error_code&)): Use filesystem::remove.
5855 * src/filesystem/std-ops.cc: Likewise.
5858 * src/filesystem/std-ops.cc (do_copy_file): Use non-null offset with
5862 * src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
5863 report an error for ENOENT.
5864 (remove_all(const path&)): Fix type of result variable.
5865 (remove_all(const path&, error_code&)): Use non-throwing increment
5866 for directory iterator. Call POSIX remove directly to avoid redundant
5867 calls to symlink_status. Do not report errors for ENOENT.
5868 * src/filesystem/std-ops.cc: Likewise.
5869 * testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
5871 * testsuite/experimental/filesystem/operations/remove_all.cc:
5874 2018-01-04 Jonathan Wakely <jwakely@redhat.com>
5877 * src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
5878 redundant call to ec.clear().
5879 (remove_all(const path&, error_code&))): Do not return an error for
5881 * src/filesystem/std-ops.cc: Likewise.
5882 * testsuite/27_io/filesystem/operations/remove.cc: New test.
5883 * testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
5884 results for non-existent paths.
5885 * testsuite/experimental/filesystem/operations/remove.cc: New test.
5886 * testsuite/experimental/filesystem/operations/remove_all.cc: Fix
5887 expected results for non-existent paths.
5889 * include/bits/fs_ops.h (exists(const path&, error_code&))): Only
5890 check status_known once.
5891 * include/experimental/bits/fs_ops.h: Likewise.
5894 * include/std/functional (__is_byte_like): New trait.
5895 (__is_std_equal_to): Remove.
5896 (__boyer_moore_base_t): Use __is_byte_like instead of
5898 * include/experimental/functional (__is_std_equal_to): Remove.
5899 (__boyer_moore_base_t): Use __is_byte_like instead of
5901 * testsuite/20_util/function_objects/83607.cc: New test.
5903 2018-01-03 Ville Voutilainen <ville.voutilainen@gmail.com>
5905 Protect optional's deduction guide with the feature macro
5906 * include/std/optional: Use the feature macro.
5908 2018-01-03 Jakub Jelinek <jakub@redhat.com>
5910 Update copyright years.
5912 Copyright (C) 2018 Free Software Foundation, Inc.
5914 Copying and distribution of this file, with or without modification,
5915 are permitted in any medium without royalty provided the copyright
5916 notice and this notice are preserved.