1 2018-10-16 Jonathan Wakely <jwakely@redhat.com>
3 * acinclude.m4 (GLIBCXX_CHECK_RANDOM_TR1): Replace with ...
4 (GLIBCXX_CHECK_DEV_RANDOM): New macro with more descriptive name.
5 Define _GLIBCXX_USE_DEV_RANDOM as well as _GLIBCXX_USE_RANDOM_TR1.
6 * config.h.in: Regenerate.
7 * configure: Regenerate.
8 * configure.ac: Use GLIBCXX_CHECK_DEV_RANDOM instead of
9 GLIBCXX_CHECK_RANDOM_TR1.
10 crossconfig.m4: Likewise.
11 * include/bits/random.h (random_device): Use _GLIBCXX_USE_DEV_RANDOM
12 instead of _GLIBCXX_USE_RANDOM_TR1.
13 * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
15 2018-10-16 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
17 * testsuite/lib/dg-options.exp (add_options_for_net_ts): New proc.
18 * testsuite/experimental/net/internet/address/v4/comparisons.cc:
19 Add dg-add-options net_ts.
20 * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise.
21 * testsuite/experimental/net/internet/address/v4/creation.cc: Likewise.
22 * testsuite/experimental/net/internet/address/v4/members.cc: Likewise.
23 * testsuite/experimental/net/internet/resolver/base.cc: Likewise.
24 * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise.
25 * testsuite/experimental/net/internet/resolver/ops/reverse.cc: Likewise.
27 2018-10-16 Jonathan Wakely <jwakely@redhat.com>
29 * testsuite/20_util/duration/literals/range_neg.cc: Adjust pruned
30 diagnostic to account for quotes around 'constexpr'.
31 * testsuite/23_containers/deque/capacity/max_size.cc: Define static
33 * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
36 * config/abi/pre/gnu.ver: Fix typos in patterns for basic_stringbuf.
37 * testsuite/27_io/basic_stringbuf/cons/char/default.cc: Disable
38 optimisation to check constructor definition can be linked to.
39 * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: Likewise.
41 2018-10-15 Jonathan Wakely <jwakely@redhat.com>
43 * testsuite/22_locale/numpunct/members/char/3.cc: Adjust test to
44 account for change to glibc it_IT localedata (glibc bz#10797).
47 * src/c++11/cxx11-shim_facets.cc: Suppress -Wabi warnings.
49 2018-10-15 François Dumont <fdumont@gcc.gnu.org>
51 * include/debug/vector (vector<>::cbegin()): Use C++11 direct
53 (vector<>::cend()): Likewise.
54 (vector<>::emplace(const_iterator, _Args&&...)): Likewise and use
55 consistent iterator comparison.
56 (vector<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
57 (vector<>::insert(const_iterator, _InputIterator, _InputIterator)):
59 (vector<>::erase(const_iterator)): Likewise.
60 (vector<>::erase(const_iterator, const_iterator)): Likewise.
62 2018-10-12 Jonathan Wakely <jwakely@redhat.com>
64 Initial commit of Networking TS implementation.
65 * include/Makefile.am: Add new headers.
66 * include/Makefile.in: Regenerate.
67 * include/experimental/bits/net.h: New header for common
68 implementation details of Networking TS.
69 * include/experimental/buffer: New header.
70 * include/experimental/executor: New header.
71 * include/experimental/internet: New header.
72 * include/experimental/io_context: New header.
73 * include/experimental/net: New header.
74 * include/experimental/netfwd: New header.
75 * include/experimental/socket: New header.
76 * include/experimental/timer: New header.
77 * testsuite/experimental/net/buffer/arithmetic.cc: New test.
78 * testsuite/experimental/net/buffer/const.cc: New test.
79 * testsuite/experimental/net/buffer/creation.cc: New test.
80 * testsuite/experimental/net/buffer/mutable.cc: New test.
81 * testsuite/experimental/net/buffer/size.cc: New test.
82 * testsuite/experimental/net/buffer/traits.cc: New test.
83 * testsuite/experimental/net/execution_context/use_service.cc: New
85 * testsuite/experimental/net/headers.cc: New test.
86 * testsuite/experimental/net/internet/address/v4/comparisons.cc: New
88 * testsuite/experimental/net/internet/address/v4/cons.cc: New test.
89 * testsuite/experimental/net/internet/address/v4/creation.cc: New
91 * testsuite/experimental/net/internet/address/v4/members.cc: New
93 * testsuite/experimental/net/internet/resolver/base.cc: New test.
94 * testsuite/experimental/net/internet/resolver/ops/lookup.cc: New
96 * testsuite/experimental/net/internet/resolver/ops/reverse.cc: New
98 * testsuite/experimental/net/timer/waitable/cons.cc: New test.
99 * testsuite/experimental/net/timer/waitable/dest.cc: New test.
100 * testsuite/experimental/net/timer/waitable/ops.cc: New test.
103 * include/experimental/memory_resource (__resource_adaptor_imp): Do
104 not allocate sizes smaller than alignment when relying on guaranteed
106 * testsuite/experimental/memory_resource/new_delete_resource.cc:
107 Adjust expected number of bytes allocated for alignof(max_align_t).
109 2018-10-11 François Dumont <fdumont@gcc.gnu.org>
111 * include/debug/forward_list
112 (forward_list<>::before_begin()): Use C++11 direct initialization.
113 (forward_list<>::begin()): Likewise.
114 (forward_list<>::end()): Likewise.
115 (forward_list<>::cbefore_begin()): Likewise.
116 (forward_list<>::cbegin()): Likewise.
117 (forward_list<>::cend()): Likewise.
118 (forward_list<>::emplace_after<>(const_iterator, _Args&&...)): Likewise.
119 (forward_list<>::insert_after(const_iterator, const _Tp&)): Likewise.
120 (forward_list<>::insert_after(const_iterator, _Tp&&)): Likewise.
121 (forward_list<>::insert_after(const_iterator, size_type, const _Tp&)):
123 (forward_list<>::insert_after(const_iterator, initializer_list<>)):
125 (forward_list<>::erase_after(const_iterator)): Likewise.
126 (forward_list<>::erase_after(const_iterator, const_iterator)): Likewise
127 and ensure consistent iterator comparison.
129 * include/bits/forward_list.h
130 (_Fwd_list_iterator<>::operator==): Replace member function with inline
132 (_Fwd_list_iterator<>::operator!=): Likewise.
133 (_Fwd_list_const_iterator<>::operator==): Likewise.
134 (_Fwd_list_const_iterator<>::operator!=): Likewise.
135 (operator==(const _Fwd_list_iterator<>&,
136 const _Fwd_list_const_iterator<>&)): Remove.
137 (operator!=(const _Fwd_list_iterator<>&,
138 const _Fwd_list_const_iterator<>&)): Remove.
139 (forward_list<>::_Node): Take typedef from base type.
140 (forward_list<>::iterator): Likewise.
141 (forward_list<>::const_iterator): Likewise.
143 2018-10-11 Jonathan Wakely <jwakely@redhat.com>
146 * src/c++11/thread.cc (this_thread::__sleep_for)
147 [_GLIBCXX_HAVE_SLEEP]: Only call sleep for non-zero values.
148 Loop while sleep call is interrupted and until steady_clock
149 shows requested duration has elapsed.
150 (!_GLIBCXX_HAVE_USLEEP]: Use the _GLIBCXX_HAVE_SLEEP code path, but
151 avoiding the usleep call.
152 * testsuite/30_threads/this_thread/60421.cc: Test repeated
153 signal interruptions.
155 * include/bits/allocator.h
156 (operator==(const allocator<_Tp>&, const allocator<_Tp>))
157 (operator!=(const allocator<_Tp>&, const allocator<_Tp>)): Replace
159 * include/ext/debug_allocator.h (operator==, operator!=): Replace
160 with inline friend functions that compare to rebound allocators.
161 * include/ext/malloc_allocator.h (operator==, operator!=): Likewise.
162 * include/ext/new_allocator.h (operator==, operator!=): Likewise.
163 * testsuite/ext/debug_allocator/eq.cc: New test.
164 * testsuite/ext/ext_pointer/alloc_eq.cc: New test.
165 * testsuite/ext/malloc_allocator/eq.cc: New test.
166 * testsuite/ext/new_allocator/eq.cc: New test.
168 2018-10-10 Jonathan Wakely <jwakely@redhat.com>
171 * include/bits/stl_vector.h (vector::_S_max_size): Limit size to
172 PTRDIFF_MAX / sizeof(value_type).
173 * include/ext/malloc_allocator.h (malloc_allocator::max_size):
175 * include/ext/new_allocator.h (new_allocator::max_size): Likewise.
176 * testsuite/23_containers/vector/allocator/minimal.cc: Adjust
177 expected value for max_size().
178 * testsuite/23_containers/vector/capacity/87544.cc: New test.
180 2018-10-09 François Dumont <fdumont@gcc.gnu.org>
182 * include/bits/stl_list.h
183 (_List_operator<>::operator==): Replace member function with inline
185 (_List_operator<>::operator!=): Likewise.
186 (_List_const_operator<>::operator==): Likewise.
187 (_List_const_operator<>::operator!=): Likewise.
188 (operator==(const _List_iterator<>&, const _List_const_iterator<>&)):
190 (operator!=(const _List_iterator<>&, const _List_const_iterator<>&)):
193 2018-10-09 Jonathan Wakely <jwakely@redhat.com>
195 * include/bits/stringfwd.h (string, wstring, u16string, u32string):
196 Define typedefs outside of __cxx11 inline namespace.
197 * python/libstdcxx/v6/printers.py (register_type_printers): Also
198 register printers for typedefs in new location.
200 2018-10-08 Jonathan Wakely <jwakely@redhat.com>
203 * testsuite/experimental/functional/87538.cc: New test.
206 * include/std/functional (_Not_fn::operator()): Check value of
207 __is_nothrow_invocable as well.
208 * testsuite/20_util/function_objects/not_fn/87538.cc: New test.
210 2018-10-08 François Dumont <fdumont@gcc.gnu.org>
212 * include/debug/list (list<>::cbegin()): Use C++11 direct
214 (list<>::cend()): Likewise.
215 (list<>::emplace<>(const_iterator, _Args&&...)): Likewise.
216 (list<>::insert(const_iterator, initializer_list<>)): Likewise.
217 (list<>::insert(const_iterator, size_type, const _Tp&)): Likewise.
218 (list<>::erase(const_iterator, const_iterator)): Ensure consistent
219 iterator comparisons.
220 (list<>::splice(const_iterator, list&&, const_iterator,
221 const_iterator)): Likewise.
223 2018-10-05 François Dumont <fdumont@gcc.gnu.org>
225 * include/bits/stl_tree.h
226 (_Rb_tree_iterator<>::operator==): Make inline friend.
227 (_Rb_tree_iterator<>::operator!=): Likewise.
228 (_Rb_tree_const_iterator<>::operator==): Likewise.
229 (_Rb_tree_const_iterator<>::operator!=): Likewise.
230 (operator==(const _Rb_tree_iterator<>&,
231 const _Rb_tree_const_iterator&)): Remove.
232 (operator!=(const _Rb_tree_iterator<>&,
233 const _Rb_tree_const_iterator&)): Remove.
234 (operator==(const _Rb_tree<>&, const _Rb_tree<>&)): Make inline friend.
235 (operator<(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
236 (operator!=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise and
238 (operator>(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
239 (operator<=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
240 (operator>=(const _Rb_tree<>&, const _Rb_tree<>&)): Likewise.
241 * include/debug/map.h (map<>::erase(const_iterator, const_iterator)):
242 Compare __victim with _Base::cend().
243 * include/debug/multimap.h
244 (multimap<>::erase(const_iterator, const_iterator)): Likewise.
245 * include/debug/set.h (set<>::erase(const_iterator, const_iterator)):
246 Compare __victim with _Base::cend().
247 * include/debug/multiset.h
248 (multiset<>::erase(const_iterator, const_iterator)): Likewise.
250 2018-10-03 Jonathan Wakely <jwakely@redhat.com>
253 * src/c++98/locale.cc (locale::locale(const locale&)): Bypass
254 reference count updates for the classic locale.
255 (locale::~locale()): Likewise.
256 (locale::operator=(const locale&)): Likewise.
257 * src/c++98/locale_init.cc (locale::locale()): Likewise.
258 (locale::global(const locale&)): Likewise.
260 2018-10-03 François Dumont <fdumont@gcc.gnu.org>
262 * include/debug/map.h
263 (map<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
264 (map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
265 (map<>::insert(value_type&&)): Likewise.
266 (map<>::insert<>(_Pair&&)): Likewise.
267 (map<>::insert<>(const_iterator, _Pair&&)): Likewise.
268 (map<>::try_emplace): Likewise.
269 (map<>::insert_or_assign): Likewise.
270 (map<>::insert(node_type&&)): Likewise.
271 (map<>::insert(const_iterator, node_type&&)): Likewise.
272 (map<>::erase(const_iterator)): Likewise.
273 (map<>::erase(const_iterator, const_iterator)): Likewise.
274 * include/debug/multimap.h
275 (multimap<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
276 (multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
277 (multimap<>::insert<>(_Pair&&)): Likewise.
278 (multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
279 (multimap<>::insert(node_type&&)): Likewise.
280 (multimap<>::insert(const_iterator, node_type&&)): Likewise.
281 (multimap<>::erase(const_iterator)): Likewise.
282 (multimap<>::erase(const_iterator, const_iterator)): Likewise.
283 * include/debug/set.h
284 (set<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
285 (set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
286 (set<>::insert(value_type&&)): Likewise.
287 (set<>::insert<>(const_iterator, value_type&&)): Likewise.
288 (set<>::insert(const_iterator, node_type&&)): Likewise.
289 (set<>::erase(const_iterator)): Likewise.
290 (set<>::erase(const_iterator, const_iterator)): Likewise.
291 * include/debug/multiset.h
292 (multiset<>::emplace<>(_Args&&...)): Use C++11 direct initialization.
293 (multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
294 (multiset<>::insert<>(value_type&&)): Likewise.
295 (multiset<>::insert<>(const_iterator, value_type&&)): Likewise.
296 (multiset<>::insert(node_type&&)): Likewise.
297 (multiset<>::insert(const_iterator, node_type&&)): Likewise.
298 (multiset<>::erase(const_iterator)): Likewise.
299 (multiset<>::erase(const_iterator, const_iterator)): Likewise.
301 2018-10-02 Marc Glisse <marc.glisse@inria.fr>
304 * include/bits/stl_bvector.h (vector::begin(), vector::cbegin()):
305 Rebuild _M_start with an explicit 0 offset.
307 2018-10-02 Jonathan Wakely <jwakely@redhat.com>
309 * include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get
310 directly instead of get, as caller ensures correct index is used.
311 (holds_alternative, get, get_if): Remove redundant inline specifiers.
312 (_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise.
314 2018-10-02 Joseph Myers <joseph@codesourcery.com>
316 * testsuite/lib/libstdc++.exp (libstdc++_init): Use
317 -fno-show-column in default cxxflags.
319 2018-10-01 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
321 * config/os/uclibc/os_defines.h (__NO_STRING_INLINES): Delete.
323 2018-10-01 Gerald Pfeifer <gerald@pfeifer.com>
325 * doc/xml/manual/allocator.xml: Adjust link to "Reconsidering
326 Custom Memory Allocation".
328 2018-10-01 Jonathan Wakely <jwakely@redhat.com>
330 * doc/html/*: Regenerate.
332 2018-09-30 Gerald Pfeifer <gerald@pfeifer.com>
334 * doc/xml/manual/messages.xml: Switch link to www.oracle.com
337 2018-09-30 Gerald Pfeifer <gerald@pfeifer.com>
339 * doc/xml/manual/policy_data_structures_biblio.xml: Update
340 link to Microsoft Component Model Object Technologies.
342 2018-09-29 Gerald Pfeifer <gerald@pfeifer.com>
344 * doc/xml/gnu/fdl-1.3.xml: The Free Software Foundation web
345 site now uses https. Also omit the unnecessary trailing slash.
346 * doc/xml/gnu/gpl-3.0.xml: Ditto.
348 2018-09-28 François Dumont <fdumont@gcc.gnu.org>
350 * include/debug/functions.h
351 (__foreign_iterator_aux3(const _Safe_iterator<>&, const _InputeIter&,
352 const _InputIter&, __true_type)): Use empty() rather than begin() ==
355 2018-09-25 Mike Crowe <mac@mcrowe.com>
357 * include/std/condition_variable (condition_variable::wait_for): Use
358 steady clock in overload that uses a predicate.
360 2018-09-25 Jonathan Wakely <jwakely@redhat.com>
363 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
364 Avoid runtime test when all alternatives are scalars and so cannot
365 throw during initialization.
367 2018-09-25 Gerald Pfeifer <gerald@pfeifer.com>
369 * doc/xml/manual/codecvt.xml: Move link to "UTF-8 and Unicode FAQ"
372 2018-09-24 Gerald Pfeifer <gerald@pfeifer.com>
374 * doc/xml/manual/policy_data_structures_biblio.xml: Update link
375 to "Priority Queues and the STL".
377 2018-09-23 Gerald Pfeifer <gerald@pfeifer.com>
379 * doc/xml/manual/using_exceptions.xml: Move boost.orgs link to
382 2018-09-21 François Dumont <fdumont@gcc.gnu.org>
385 * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
386 Use __builtin_floor to compute _M_next_resize.
387 * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt.
388 * testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc:
391 2018-09-21 Jonathan Wakely <jwakely@redhat.com>
393 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Remove.
394 * testsuite/26_numerics/headers/cmath/hypot.cc: Restore test for
395 long double unconditionally, but use lower tolerance when
396 sizeof(long double) == sizeof(double).
398 2018-09-20 Christophe Lyon <christophe.lyon@linaro.org>
400 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Skip
403 2018-09-19 Jonathan Wakely <jwakely@redhat.com>
405 * include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()):
406 Remove __glibcxx_assert statements and use map::find instead of
409 2018-09-18 François Dumont <fdumont@gcc.gnu.org>
412 * src/c++11/hashtable_c++0x.cc:
413 (_Prime_rehash_policy::_M_next_bkt): Return a prime no smaller than
414 requested size, but not necessarily greater.
415 (_Prime_rehash_policy::_M_need_rehash): Rehash only if target size is
416 strictly greater than next resize threshold.
417 * testsuite/23_containers/unordered_map/modifiers/reserve.cc: Adapt test
418 to validate that there is no rehash as long as number of insertion is
419 lower or equal to the reserved number of elements.
421 2018-09-18 Jonathan Wakely <jwakely@redhat.com>
423 * include/bits/unique_ptr.h (__uniq_ptr_impl): Remove static assertion
424 checking invocable condition.
425 (unique_ptr::~unique_ptr, unique_ptr::reset): Restore static assertion
426 here, where types must be complete. Pass pointer to deleter as an
428 * testsuite/20_util/unique_ptr/requirements/incomplete.cc: New test.
430 2018-09-13 Jonathan Wakely <jwakely@redhat.com>
432 * include/std/variant (variant) [__clang__]: Limit workaround to
435 2018-09-11 Jonathan Wakely <jwakely@redhat.com>
438 * include/bits/shared_ptr.h (make_shared): Use remove_cv instead of
440 * testsuite/20_util/shared_ptr/creation/87278.cc: New test.
442 Implement LWG 2905 changes to constrain unique_ptr constructors
443 * include/bits/unique_ptr.h (__uniq_ptr_impl): Add assertions to
445 (unique_ptr::unique_ptr(pointer, const deleter_type&)): Add copy
446 constructible constraint.
447 (unique_ptr::unique_ptr(pointer, deleter_type&&)): Disable for
448 deleters of reference type and add move constructible constraint.
449 (unique_ptr::unique_ptr(pointer, remove_reference_t<deleter_type>&&)):
450 Disable for deleters of non-reference type. Define as deleted.
451 (unique_ptr<T[], D>): Likewise.
452 * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error
453 directives with unstable line numbers with dg-prune-output.
454 * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
455 * testsuite/20_util/unique_ptr/cons/lwg2905.cc: New test.
456 * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
457 Make deleter types invocable.
459 2018-09-05 Jonathan Wakely <jwakely@redhat.com>
461 * libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.
463 2018-09-03 Jonathan Wakely <jwakely@redhat.com>
466 * testsuite/26_numerics/headers/cmath/hypot-long-double.cc: New test
467 that runs the long double part of hypot.cc.
468 * testsuite/26_numerics/headers/cmath/hypot.cc: Disable long double
469 tests unless TEST_HYPOT_LONG_DOUBLE is defined.
471 * include/bits/stl_vector.h (vector::_Temporary_value::_M_ptr):
472 Return raw pointer not allocator's pointer type.
473 (vector::_Temporary_value::_M_val): Use _M_ptr.
476 * include/bits/stl_map.h
477 (map::map(initializer_list<value_type>, const Compare&, const Alloc&))
478 (map::map(initializer_list<value_type>, const Alloc&))
479 (map::map(InputIterator, InputIterator, const Alloc&))
480 (map::map(InputIterator, InputIterator))
481 (map::map(InputIterator, InputIterator, const Compare&, const Alloc&))
482 (map::insert(InputIterator, InputIterator)):
483 Call _M_insert_range_unique instead of _M_insert_unique.
484 * include/bits/stl_multimap.h
485 (multimap::multimap(initializer_list<value_type>, const C&, const A&))
486 (multimap::multimap(initializer_list<value_type>, const A&))
487 (multimap::multimap(InputIterator, InputIterator, const A&))
488 (multimap::multimap(InputIterator, InputIterator))
489 (multimap::multimap(InputIterator, InputIterator, const C&, const A&))
490 (multimap::insert(InputIterator, InputIterator)): Call
491 _M_insert_range_equal instead of _M_insert_equal.
492 * include/bits/stl_multiset.h
493 (multiset::multiset(InputIterator, InputIterator))
494 (multiset::multiset(InputIterator, InputIterator, const C&, const A&))
495 (multiset::multiset(initializer_list<value_type>, const C&, const A&))
496 (multiset::multiset(initializer_list<value_type>, const A&))
497 (multiset::multiset(InputIterator, InputIterator, const A&))
498 (multiset::insert(InputIterator, InputIterator)): Call
499 _M_insert_range_equal instead of _M_insert_equal.
500 * include/bits/stl_set.h
501 (set::set(InputIterator, InputIterator))
502 (set::set(InputIterator, InputIterator, const Compare&, const Alloc&))
503 (set::set(initializer_list<value_type>, const Compare&, const Alloc&))
504 (set::set(initializer_list<value_type>, const Alloc&))
505 (set::set(InputIterator, InputIterator, const Alloc&))
506 (set::insert(InputIterator, InputIterator)):
507 Call _M_insert_range_unique instead of _M_insert_unique.
508 * include/bits/stl_tree.h
509 [__cplusplus >= 201103L] (_Rb_tree::__same_value_type): New alias
510 template for SFINAE constraints.
511 [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_unique): Pair of
512 constrained overloads that either insert or emplace, depending on
513 iterator's value_type.
514 [__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_equal): Likewise.
515 [__cplusplus < 201103L] (_Rb_tree::_M_insert_range_unique)
516 (_Rb_tree::_M_insert_range_equal): New functions replacing range
517 versions of _M_insert_unique and _M_insert_equal.
518 (_Rb_tree::_M_insert_unique(_InputIterator, _InputIterator))
519 (_Rb_tree::_M_insert_equal(_InputIterator, _InputIterator)): Remove.
520 * testsuite/23_containers/map/modifiers/insert/87194.cc: New test.
521 * testsuite/23_containers/multimap/modifiers/insert/87194.cc: New test.
522 * testsuite/23_containers/multiset/modifiers/insert/87194.cc: New test.
523 * testsuite/23_containers/set/modifiers/insert/87194.cc: New test.
526 * include/bits/stl_map.h (map::insert(_Pair&&))
527 (map::insert(const_iterator, _Pair&&)): Do emplace instead of insert.
528 * include/bits/stl_multimap.h (multimap::insert(_Pair&&))
529 (multimap::insert(const_iterator, _Pair&&)): Likewise.
530 * include/bits/unordered_map.h (unordered_map::insert(_Pair&&))
531 (unordered_map::insert(const_iterator, _Pair&&))
532 (unordered_multimap::insert(_Pair&&))
533 (unordered_multimap::insert(const_iterator, _Pair&&)): Likewise.
534 * testsuite/23_containers/map/modifiers/insert/78595.cc: New test.
535 * testsuite/23_containers/multimap/modifiers/insert/78595.cc: New test.
536 * testsuite/23_containers/unordered_map/modifiers/78595.cc: New test.
537 * testsuite/23_containers/unordered_multimap/modifiers/78595.cc: New
540 2018-09-02 François Dumont <fdumont@gcc.gnu.org>
542 * include/debug/safe_iterator.h
543 (_Safe_iterator<_It, _Seq, _Cat>::_Self): New.
544 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>::_Self):
546 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
548 (_GLIBCXX_DEBUG_VERIFY_OPERANDS, _GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS)
549 (_GLIBCXX_DEBUG_VERIFY_REL_OPERANDS)
550 (_GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS): Define macros.
551 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
552 ::operator+(difference_type)): Use latters, inline as friend.
553 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
554 ::operator-(difference_type)): Likewise.
555 (operator==(const _Safe_iterator<>&, const _Safe_iterator<>&)):
557 (operator!=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
559 (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
560 (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
562 (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
563 (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
565 (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
566 (operator+(difference_type, const _Safe_iterator<>&)): Likewise.
567 (operator-(const _Safe_iterator<>&, difference_type)): Likewise.
568 * include/debug/safe_iterator.tcc
569 (_Safe_iterator<>::_M_can_advance(difference_type)): Take parameter by
571 * include/debug/safe_local_iterator.h
572 (_Safe_local_iterator<_It, _Seq>::_Self): New.
573 (_Safe_local_iterator<_It, _Seq>::_OtherSelf): New.
574 (_GLIBCXX_DEBUG_VERIFY_OPERANDS): Define macro.
575 (operator==(const _Safe_local_iterator<>&,
576 const _Safe_local_iterator<>&)): Use latter, inline as friend.
577 (operator!=(const _Safe_local_iterator<>&,
578 const _Safe_local_iterator<>&)): Likewise.
579 * testsuite/util/testsuite_containers.h: Include utility.
580 (struct forward_members_unordered<_Tp, bool>): Remove 2nd template
582 (forward_members_unordered<>::forward_members_unordered(value_type&)):
583 Add using namespace std::rel_ops.
584 Add iterator_concept_checks on local_iterator and const_local_iterator.
585 Add asserts on comparison between const_local_iterator and
587 (struct forward_members_unordered<_Tp, false>): Remove partial
589 * testsuite/23_containers/forward_list/types/1.cc: New.
590 * testsuite/23_containers/list/types/1.cc: New.
592 2018-09-01 Gerald Pfeifer <gerald@pfeifer.com>
594 * doc/xml/manual/profile_mode.xml: Update three ieeexplore.ieee.org
597 2018-08-31 Sandra Loosemore <sandra@codesourcery.com>
599 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc:
600 Add dg-require-fileio.
601 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
603 * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
605 * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
607 * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc:
609 * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
611 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc: Likewise.
612 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc: Likewise.
613 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc: Likewise.
614 * testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc: Likewise.
615 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: Likewise.
616 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc:
618 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc:
620 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc:
622 * testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc:
624 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc:
626 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc:
628 * testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc:
630 * testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: Likewise.
631 * testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: Likewise.
632 * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: Likewise.
633 * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: Likewise.
634 * testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
636 * testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc:
638 * testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise.
639 * testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Likewise.
640 * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc: Likewise.
641 * testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise.
642 * testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc: Likewise.
643 * testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc: Likewise.
644 * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: Likewise.
645 * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: Likewise.
646 * testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc:
648 * testsuite/27_io/objects/wchar_t/10.cc: Likewise.
649 * testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
650 * testsuite/27_io/objects/wchar_t/12048-2.cc: Likewise.
651 * testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
652 * testsuite/27_io/objects/wchar_t/12048-4.cc: Likewise.
653 * testsuite/27_io/objects/wchar_t/12048-5.cc: Likewise.
654 * testsuite/experimental/string_view/inserters/wchar_t/2.cc:
656 * testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
658 2018-08-30 Sandra Loosemore <sandra@codesourcery.com>
660 * testsuite/experimental/propagate_const/observers/1.cc: Make
661 dependence on -fdelete-null-pointer-checks explicit.
663 2018-08-30 Jonathan Wakely <jwakely@redhat.com>
665 * include/bits/hashtable_policy.h (__clp2): Fix calculation for LLP64
666 targets where sizeof(size_t) > sizeof(long). Avoid undefined shifts
667 of the number of bits in the type.
668 * include/std/bit (__ceil2): Avoid undefined shifts.
669 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Test values with
670 the most signifiant bit set.
672 * config/abi/pre/gnu.ver: Add missing exports for mingw.
674 * include/ext/pointer.h (_Pointer_adapter): Define operators for
675 pointer arithmetic using long long offsets.
676 * testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
679 2018-08-29 Jonathan Wakely <jwakely@redhat.com>
682 * testsuite/22_locale/time_get/get_date/wchar_t/4.cc: Check D_FMT
683 string for alternative format.
685 2018-08-28 Jonathan Wakely <jwakely@redhat.com>
688 * src/filesystem/std-path.cc (path::lexically_normal): When handling
689 a dot-dot filename, preserve an empty final component in the iteration
691 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use preferred-separator for
693 * testsuite/27_io/filesystem/path/generation/normal.cc: Add new tests
694 for more than two adjacent dot-dot filenames.
695 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Replace slashes with
696 preferred-separator in expected normalized strings.
698 2018-08-25 Iain Sandoe <iain@sandoe.co.uk>
701 * configure.host (OPT_LDFLAGS): Don't append
702 -fvisibility-inlines-hidden for newer Darwin.
704 2018-08-24 Marc Glisse <marc.glisse@inria.fr>
707 * libsupc++/new (operator new(size_t, nothrow_t), operator
708 new[](size_t, nothrow_t), operator new(size_t, align_val_t, nothrow_t),
709 operator new[](size_t, align_val_t, nothrow_t)): Add malloc attribute.
711 2018-08-24 Jonathan Wakely <jwakely@redhat.com>
713 * include/debug/deque (std::__debug::deque): Declare.
714 * include/debug/forward_list (std::__debug::forward_list): Declare.
715 * include/debug/list (std::__debug::list): Declare.
716 * include/debug/map (std::__debug::map): Declare.
717 * include/debug/set (std::__debug::set): Declare.
718 * include/debug/unordered_map (std::__debug::unordered_map): Declare.
719 * include/debug/unordered_set (std::__debug::unordered_set): Declare.
720 * include/debug/vector (std::__debug::vector): Declare.
721 * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: New test.
722 * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: New
724 * testsuite/23_containers/list/pmr_typedefs_debug.cc: New test.
725 * testsuite/23_containers/map/pmr_typedefs_debug.cc: New test.
726 * testsuite/23_containers/multimap/pmr_typedefs_debug.cc: New test.
727 * testsuite/23_containers/multiset/pmr_typedefs_debug.cc: New test.
728 * testsuite/23_containers/set/pmr_typedefs_debug.cc: New test.
729 * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc: New
731 * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
733 * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
735 * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: New
737 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
738 Adjust dg-error lineno.
739 * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: New
742 2018-08-23 Jonathan Wakely <jwakely@redhat.com>
744 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
745 Only define when RTTI is enabled.
747 * include/debug/vector (__niter_base): Define for C++98.
749 * testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc:
750 Fix C++98 test to not use C++11 features.
751 * testsuite/25_algorithms/fill_n/2.cc: Likewise.
753 * scripts/check_compile: Fix comments.
755 * include/debug/string (insert(__const_iterator, _InIter, _InIter)):
756 [!_GLIBCXX_USE_CXX11_ABI]: Replace use of C++11-only cbegin() with
757 begin(), for C++98 compatibility.
759 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
760 (basic_string::__const_iterator): Change access to protected.
761 [!_GLIBCXX_USE_CXX11_ABI] (basic_string::__const_iterator): Define
762 as typedef for iterator.
763 * include/debug/string (__const_iterator): Use typedef from base.
764 (insert(const_iterator, _CharT))
765 (replace(const_iterator, const_iterator, const basic_string&))
766 (replace(const_iterator, const_iterator, const _CharT*, size_type))
767 (replace(const_iterator, const_iterator, const CharT*))
768 (replace(const_iterator, const_iterator, size_type, _CharT))
769 (replace(const_iterator, const_iterator, _InputIter, _InputIter))
770 (replace(const_iterator, const_iterator, initializer_list<_CharT>)):
771 Change const_iterator parameters to __const_iterator.
772 (insert(iterator, size_type, _CharT)): Add C++98 overload.
773 (insert(const_iterator, _InputIterator, _InputIterator)): Change
774 const_iterator parameter to __const_iterator.
775 [!_GLIBCXX_USE_CXX11_ABI]: Add workaround for incorrect return type
776 of base's member function.
777 (insert(const_iterator, size_type, _CharT)) [!_GLIBCXX_USE_CXX11_ABI]:
779 (insert(const_iterator, initializer_list<_CharT>))
780 [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
781 * testsuite/21_strings/basic_string/init-list.cc: Remove effective
784 * testsuite/20_util/reference_wrapper/lwg2993.cc: Fix C++11 test to
785 not use C++14 feature.
786 * testsuite/23_containers/list/68222_neg.cc: Likewise.
788 * testsuite/21_strings/basic_string/init-list.cc:
790 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
792 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
795 * testsuite/23_containers/deque/capacity/max_size.cc: Fix test for
797 * testsuite/23_containers/deque/modifiers/assign/1.cc: Likewise.
798 * testsuite/23_containers/list/modifiers/assign/1.cc: Likewise.
799 * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: Likewise.
800 * testsuite/23_containers/vector/capacity/max_size.cc: Likewise.
801 * testsuite/23_containers/vector/modifiers/assign/1.cc: Likewise.
803 2018-08-22 Jonathan Wakely <jwakely@redhat.com>
806 * include/experimental/regex [!_GLIBCXX_USE_CXX11_ABI]
807 (experimental::pmr::match_results, experimental::pmr::cmatch)
808 (experimental::pmr::smatch, experimental::pmr::wcmatch)
809 (experimental::pmr::wsmatch): Do not declare for gcc4-compatible ABI,
810 because COW strings don't support C++11 allocator model.
811 * include/experimental/string [!_GLIBCXX_USE_CXX11_ABI]
812 (experimental::pmr::basic_string, experimental::pmr::string)
813 (experimental::pmr::u16string, experimental::pmr::u32string)
814 (experimental::pmr::wstring): Likewise.
815 * include/std/regex [!_GLIBCXX_USE_CXX11_ABI] (pmr::match_results)
816 (pmr::cmatch, pmr::smatch, pmr::wcmatch, pmr::wsmatch): Likewise.
817 * include/std/string [!_GLIBCXX_USE_CXX11_ABI] (pmr::basic_string)
818 (pmr::string, pmr::u16string, pmr::u32string, pmr::wstring): Likewise.
819 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Require
821 * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
824 * include/bits/deque.tcc (deque::_M_range_initialize): Use
825 _S_check_init_len to check size.
826 (deque::_M_push_back_aux, deque::_M_push_front_aux): Throw length
827 error if size would exceed max_size().
828 * include/bits/stl_deque.h (_Deque_base::size_type): Remove typedef.
829 (_Deque_base(_Deque_base&&, const allocator_type&, size_t)): Use
830 size_t instead of size_type.
831 (deq(size_type, const allocator_type&)
832 (deq(size_type, const value_type&, const allocator_type&)
833 (deque::_M_initialize_dispatch): Use _S_check_init_len to check size.
834 (deque::max_size): Call _S_max_size.
835 (deque::_S_check_init_len, deque::_S_max_size): New functions.
836 * include/bits/stl_vector.h (vector(size_type, const allocator_type&))
837 (vector(size_type, const value_type&, const allocator_type&))
838 (vector::_M_initialize_dispatch, vector::_M_range_initialize): Use
839 _S_check_init_len to check size.
840 (vector::max_size): Call _S_max_size.
841 (vector::_M_check_len): Prevent max from being expanded as a
843 (vector::_S_check_init_len, vector::_S_max_size): New functions.
844 * include/bits/vector.tcc (vector::_M_assign_aux): Use
845 _S_check_init_len to check size.
846 * testsuite/23_containers/deque/capacity/max_size.cc: New test.
847 * testsuite/23_containers/vector/capacity/max_size.cc: New test.
849 2018-08-22 François Dumont <fdumont@gcc.gnu.org>
852 * include/debug/safe_iterator.h
853 (_Safe_iterator<_It, _Sq, _Cat>): Add category template parameter.
854 (_Safe_iterator<>::_Const_iterator): Remove.
855 (_Safe_iterator<>::_IsConstant): New.
856 (_Safe_iterator<>::_OtherIterator): New.
857 (_Safe_iterator<_It, _Sq, _Cat>::_Safe_iterator<_MutIte>(
858 const _Safe_iterator<_MutIte, _Sq, _Cat>&)): Add _IsConstant::__value in
859 __gnu_cxx::__enable_if condition.
860 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to): New.
861 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_from_begin): New.
862 (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to_end): New.
863 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>): New.
864 (_Safe_iterator<_It, _Sq, _Cat>::operator--()): Move...
865 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
866 ::operator--()): ...here.
867 (_Safe_iterator<_It, _Sq, _Cat>::operator--(int)): Move...
868 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
869 ::operator--(int)): ...here.
870 (_Safe_iterator<_It, _Sq, _Cat>::_M_decrementable()): Move...
871 (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>
872 ::_M_decrementable()): ...here.
873 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>): New.
874 (_Safe_iterator<_It, _Sq, _Cat>::operator[](const difference_type&)):
876 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
877 ::operator[](const difference_type&)): ...here.
878 (_Safe_iterator<_It, _Sq, _Cat>::operator+=(const difference_type&)):
880 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
881 ::operator+=(const difference_type&)): ...here.
882 (_Safe_iterator<_It, _Sq, _Cat>::operator+(const difference_type&)):
884 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
885 ::operator+(const difference_type&)): ...here.
886 (_Safe_iterator<_It, _Sq, _Cat>::operator-=(const difference_type&)):
888 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
889 ::operator-=(const difference_type&)): ...here.
890 (_Safe_iterator<_It, _Sq, _Cat>::operator-(const difference_type&)):
892 (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>
893 ::operator-(const difference_type&)): ...here.
894 (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)):
895 Constraint to random access iterators.
896 (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
898 (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
899 (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)):
901 (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise.
902 (operator+(const difference_type&, const _Safe_iterator<>&)): Likewise.
903 (__check_dereferenceable(const _Safe_iterator<>&)): Remove.
904 (__get_distance): Remove.
905 (__get_distance_from_begin): Remove.
906 (__get_distance_to_end): Remove.
907 (struct __is_safe_random_iterator<_Safe_iterator<>>): Remove partial
909 (__base(const _Safe_iterator<>&, std::input_iterator_tag)): Remove.
910 (__base(const _Safe_iterator<>&, std::random_access_iterator_tag)): Remove.
911 (__base(const _Safe_iterator<>&)): Constraint to random access iterator.
912 * include/debug/safe_iterator.tcc
913 (_Safe_iterator<>::_M_get_distance_from_begin()): New.
914 (_Safe_iterator<>::_M_get_distance_to_end()): New.
915 (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator<>&)): New.
916 (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
917 ::_M_valid_range): New.
918 * include/debug/safe_local_iterator.h
919 (_Safe_local_iterator<>::_Const_local_iterator): Remove.
920 (_Safe_local_iterator<>::_IsConstant): New.
921 (_Safe_local_iterator<>::_OtherIterator): New.
922 (_Safe_local_iterator<_It, _Cont>::_Safe_local_iterator<_MutIte, _Cont>(
923 const _Safe_local_iterator<_MutIte, _Seq>&)): Add _IsConstant::__value
924 in __gnu_cxx::__enable_if condition. If singular compare base iterator
925 with _MutIte rather than _It.
926 (_Safe_local_iterator<>::_S_constant): Make constexpr.
927 (_Safe_local_iterator<>::_M_get_distance_to): New.
928 (__check_dereferenceable(const _Safe_local_iterator<>&)): Remove.
929 (__get_distance(const _Safe_local_iterator<>&,
930 const _Safe_local_iterator<>&, std::input_iterator_tag)): Remove.
931 (__valid_range(const _Safe_local_iterator<>&,
932 const _Safe_local_iterator<>&)): New.
933 * include/debug/safe_local_iterator.tcc
934 (_Safe_local_iterator<>::_M_get_distance_to): New.
935 * include/debug/deque (std::__debug::deque<>): Add
936 ::__gnu_debug::_Safe_iterator<> friend declaration.
937 * include/debug/forward_list (std::__debug::forward_list<>): Likewise.
938 * include/debug/list (std::__debug::list<>): Likewise.
939 * include/debug/map.h (std::__debug::map<>): Likewise.
940 * include/debug/multimap.h (std::__debug::multimap<>): Likewise.
941 * include/debug/set.h (std::__debug::set<>): Likewise.
942 * include/debug/multiset.h (std::__debug::multiset<>): Likewise.
943 * include/debug/string (std::__debug::basic_string<>): Likewise.
944 * include/debug/unordered_map (std::__debug::unordered_map<>): Likewise
945 and add ::__gnu_debug::_Safe_local_iterator<> friend declaration.
946 (std::__debug::unordered_multimap<>): Likewise.
947 * include/debug/unordered_set (std::__debug::unordered_set<>): Likewise.
948 (std::__debug::unordered_multiset<>): Likewise.
949 * include/debug/formatter.h: Adapt.
950 * include/debug/helper_functions.h
951 (__gnu_debug::_Safe_local_iterator<>): Add declaration.
952 (__get_distance<_Ite>(_Ite, _Ite, std::random_access_iterator_tag):
953 Pass parameter by copy.
954 (__get_distance<_Ite>(_Ite, _Ite, std::input_iterator_tag): Likewise.
955 (__get_distance<_Ite>(_Ite, _Ite): Likewise.
956 (__valid_range_aux<_Integral>): Pass _Integral by copy.
957 (__valid_range<_InputIterator>): Pass _InputIterator by copy.
958 (__valid_range<>(const _Safe_iterator<>&,
959 const _Safe_iterator<>&, typename _Distance_traits<>::__type&)):
961 (__valid_range(const _Safe_local_iterator<>&,
962 const _Safe_local_iterator<>&, typename _Distance_traits<>::__type&)):
964 (__valid_range<>(const _Safe_iterator<>&, const _Safe_iterator<>&)):
966 (__valid_range(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&)):
968 (__can_advance): Adapt.
969 (struct __is_safe_random_iterator<>): Remove.
970 (struct _SIter_base<>): Remove.
971 * include/debug/functions.h: Include <bits/stl_iterator.h>.
972 (__check_dereferenceable): Remove.
973 (__foreign_iterator_aux4, __foreign_iterator_aux3): Adapt.
974 (__foreign_iterator_aux2, __foreign_iterator_aux): Adapt.
975 (__foreign_iterator): Adapt.
976 * include/debug/stl_iterator.h
977 (__is_safe_random_iterator<std::reverse_iterator<>>): Remove.
978 (__base(const std::reverse_iterator<_Safe_iterator<_It, _Sq>)):
979 Constraint for random access iterators.
980 (__niter_base): Adapt.
981 * testsuite/util/testsuite_containers.h:
982 Include <bits/boost_concept_check.h>.
983 (iterator_concept_checks<_It, _Mutable, _Category>): New.
984 (citerator<_Cont>::forward_members::forward_members()): Instantiate
985 latter for container iterator and const_iterator.
986 * testsuite/23_containers/list/68222_neg.cc: New.
987 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: Adapt
989 * testsuite/23_containers/unordered_set/debug/debug_functions.cc:
991 * testsuite/23_containers/vector/debug/debug_functions.cc (test01):
994 2018-08-22 Jonathan Wakely <jwakely@redhat.com>
997 * doc/xml/manual/status_cxx1998.xml: Document size_type and
998 difference_type for containers.
999 * doc/html/*: Regenerate.
1001 2018-08-21 François Dumont <fdumont@gcc.gnu.org>
1003 P0646R1 Improving the Return Value of Erase-Like Algorithms I
1004 * include/debug/forward_list (forward_list::__remove_return_type):
1005 Define typedef as size_type or void, according to __cplusplus value.
1006 (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
1007 empty, according to __cplusplus value.
1008 (_GLIBCXX20_ONLY): Define macro.
1009 (forward_list::remove, forward_list::unique): Use typedef and macro
1010 to change return type and add abi-tag for C++2a. Return number of
1011 removed elements for C++2a.
1012 (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
1013 typedef to change return type for C++2a. Return number of removed
1015 * include/debug/list (list::__remove_return_type): Define typedef as
1016 size_type or void, according to __cplusplus value.
1017 (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
1018 empty, according to __cplusplus value.
1019 (_GLIBCXX20_ONLY): Define macro.
1020 (list::remove, list::unique): Use typedef and macro to change return
1021 type and add abi-tag for C++2a. Return number of removed elements for
1023 (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use typedef
1024 to change return type for C++2a. Return number of removed elements for
1027 2018-08-21 David Edelsohn <dje.gcc@gmail.com>
1029 * testsuite/18_support/new_nothrow.cc: XFAIL on AIX.
1031 2018-08-21 Jonathan Wakely <jwakely@redhat.com>
1033 * testsuite/26_numerics/bit/bitops.count/countl_one.cc: Remove
1034 redundant dg-do directive.
1035 * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
1036 * testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
1037 * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
1038 * testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.
1040 2018-08-20 Jonathan Wakely <jwakely@redhat.com>
1043 * include/std/tuple (_Tuple_impl::operator=): Define as deleted.
1044 (_Tuple_impl::_M_assign): New functions to perform assignment instead
1045 of assignment operators.
1046 (_Tuple_impl::_M_swap): Remove exception specification.
1047 (_Tuple_impl<_Idx, _Head>): Likewise.
1048 (_TC::_NonNestedTuple, _TC::_NotSameTuple): Use __remove_cvref_t.
1049 (__tuple_base): Remove.
1050 (tuple, tuple<_T1, _T2>): Remove inheritance from __tuple_base.
1051 (tuple::operator=, tuple<_T1, _T2>::operator=): Call _M_assign.
1052 (tuple::swap, tuple<_T1, _T2>::swap): Define exception specification
1053 using __is_nothrow_swappable.
1054 (tuple<_T1, _T2>::tuple(_U1&&, _U2&&)): Use __remove_cvref_t.
1056 * include/std/optional (_Optional_payload): Use variable templates
1057 for conditions in default template arguments and exception
1059 (optional): Likewise. Adjust indentation.
1060 (optional::__not_self, optional::__not_tag, optional::_Requires): New
1062 (optional::optional): Use new helpers in constructor constraints.
1063 * include/std/type_traits (__or_v, __and_v): New variable templates.
1064 * testsuite/20_util/optional/cons/value_neg.cc: Change dg-error to
1065 dg-prune-output. Remove unused header.
1067 2018-08-18 François Dumont <fdumont@gcc.gnu.org>
1069 * testsuite/25_algorithms/copy/86658.cc: Use dg-options to define
1072 2018-08-17 Jonathan Wakely <jwakely@redhat.com>
1075 * include/std/tuple (__tuple_base): New class template with deleted
1076 copy assignment operator.
1077 (tuple, tuple<_T1, _T2>): Derive from __tuple_base<tuple> so that
1078 implicit copy/move assignment operator will be deleted/suppressed.
1079 (tuple::__assignable, tuple<_T1, _T2>::__assignable): New helper
1080 functions for SFINAE constraints on assignment operators.
1081 (tuple::__nothrow_assignable, tuple<_T1, _T2>::__nothrow_assignable):
1082 New helper functions for exception specifications.
1083 (tuple::operator=(const tuple&), tuple::operator=(tuple&&))
1084 (tuple<_T1, _T2>::operator=(const tuple&))
1085 (tuple<_T1, _T2>::operator=(tuple&&)): Change parameter types to
1086 __nonesuch_no_braces when the operator should be defined implicitly.
1087 Use __nothrow_assignable for exception specifications.
1088 (tuple::operator=(const tuple<_UElements...>&))
1089 (tuple::operator=(tuple<_UElements...>&&))
1090 (tuple<_T1, _T2>::operator=(const tuple<_U1, _U2>&))
1091 (tuple<_T1, _T2>::operator=(tuple<_U1, _U2>&&))
1092 (tuple<_T1, _T2>::operator=(const pair<_U1, _U2>&))
1093 (tuple<_T1, _T2>::operator=(pair<_U1, _U2>&&)): Constrain using
1094 __assignable and use __nothrow_assignable for exception
1096 * python/libstdcxx/v6/printers.py (is_specialization_of): Accept
1097 gdb.Type as first argument, instead of a string.
1098 (StdTuplePrinter._iterator._is_nonempty_tuple): New method to check
1099 tuple for expected structure.
1100 (StdTuplePrinter._iterator.__init__): Use _is_nonempty_tuple.
1101 * testsuite/20_util/tuple/dr2729.cc: New test.
1102 * testsuite/20_util/tuple/element_access/get_neg.cc: Change dg-error
1105 2018-08-16 Jonathan Wakely <jwakely@redhat.com>
1107 * include/tr1/legendre_function.tcc (__sph_legendre): Avoid warning
1108 about signed/unsigned comparison.
1110 * include/std/ostream (basic_ostream::sentry::~sentry): Suppress
1111 deprecation warnings for using uncaught_exception().
1114 * src/c++11/cow-stdexcept.cc [_GLIBCXX_FULLY_DYNAMIC_STRING]
1115 (logic_error::logic_error(logic_error&&))
1116 (logic_error::operator=(logic_error&&))
1117 (runtime_error::runtime_error(runtime_error&&))
1118 (runtime_error::operator=(runtime_error&&)): Copy strings instead of
1119 moving, to avoid allocating empty reps for moved-from strings.
1121 2018-08-15 Jonathan Wakely <jwakely@redhat.com>
1123 * include/experimental/regex: Remove begin/end macros for namespace.
1124 * include/experimental/string: Likewise.
1125 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc:
1127 * testsuite/experimental/polymorphic_allocator/
1128 pmr_typedefs_forward_list.cc: New test.
1129 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc:
1131 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc:
1133 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
1135 * testsuite/experimental/polymorphic_allocator/
1136 pmr_typedefs_multimap.cc: New test.
1137 * testsuite/experimental/polymorphic_allocator/
1138 pmr_typedefs_multiset.cc: New test.
1139 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc:
1141 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
1143 * testsuite/experimental/polymorphic_allocator/
1144 pmr_typedefs_unordered_map.cc: New test.
1145 * testsuite/experimental/polymorphic_allocator/
1146 pmr_typedefs_unordered_multimap.cc: New test.
1147 * testsuite/experimental/polymorphic_allocator/
1148 pmr_typedefs_unordered_multiset.cc: New test.
1149 * testsuite/experimental/polymorphic_allocator/
1150 pmr_typedefs_unordered_set.cc: New test.
1151 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc:
1154 * include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
1155 calls to __uses_allocator_construct_impl and __use_alloc.
1156 * include/experimental/memory_resource
1157 (polymorphic_allocator::_M_construct): Remove.
1158 (polymorphic_allocator::construct): Call __uses_allocator_construct.
1159 Qualify calls to __use_alloc.
1160 * include/std/memory_resource (polymorphic_allocator::construct): Fix
1161 type in SFINAE constraint. Use constexpr if instead of tag dispatching
1162 to _S_construct overloads.
1163 (polymorphic_allocator::construct(pair<T1, T2>*, ...)): Fix order of
1164 arguments to _S_construct_p.
1165 (polymorphic_allocator::_S_construct): Remove.
1166 (polymorphic_allocator::_S_construct_p): Return allocators by value
1168 * include/std/scoped_allocator (scoped_allocator_adaptor::construct):
1169 Qualify calls to __use_alloc.
1170 * testsuite/20_util/polymorphic_allocator/construct_pair.cc: New test,
1171 copied from testsuite/20_util/scoped_allocator/construct_pair.cc.
1172 * testsuite/experimental/polymorphic_allocator/1.cc: New test.
1173 * testsuite/experimental/polymorphic_allocator/construct_pair.cc:
1176 * src/c++17/memory_resource.cc [!_GLIBCXX_HAS_GTHREADS]
1177 (atomic_mem_res): Add unsynchronized definition for single-threaded.
1179 2018-08-14 Jonathan Wakely <jwakely@redhat.com>
1182 * include/bits/stl_tempbuf.h (return_temporary_buffer): Use
1183 non-placement delete.
1185 * include/std/chrono (__check_overflow): Simplify definition.
1186 (_Checked_integral_constant): Remove.
1189 * src/c++17/default_resource.h: New file, defining default_res.
1190 * src/c++17/memory_resource.cc [ATOMIC_POINTER_LOCK_FREE != 2]
1191 (atomic_mem_res): Define alternative for atomic<memory_resource*>
1192 using a mutex instead of atomics.
1195 * config/abi/pre/gnu.ver: Export new symbol.
1196 * doc/xml/manual/abi.xml: Document new versions.
1197 * include/bits/fstream.tcc (basic_filebuf<C, T>::underflow)
1198 (basic_filebuf<C, T>::xsgetn): Pass errno to __throw_ios_failure.
1199 * include/bits/functexcept.h (__throw_ios_failure(const char*, int)):
1200 Declare new overload.
1201 * src/c++11/cxx11-ios_failure.cc (__ios_failure): Add new constructor
1202 and static member function.
1203 (__throw_ios_failure(const char*, int)): Define.
1204 * src/c++98/ios_failure.cc [!_GLIBCXX_USE_DUAL_ABI]
1205 (__throw_ios_failure(const char*, int)): Define.
1207 2018-08-14 Jeremy Sawicki <jeremy-gcc@sawicki.us>
1209 * include/ext/rope (_Rope_iterator_base(const _Rope_iterator_base&))
1210 (_Rope_const_iterator::operator=(const _Rope_const_iterator&))
1211 (_Rope_iterator::operator=(const _Rope_iterator&)): Ensure
1212 copied/assigned rope iterators don't retain pointers to the iterator
1213 they were copied/assigned from.
1214 * testsuite/ext/rope/7.cc: New.
1216 2018-08-13 Jonathan Wakely <jwakely@redhat.com>
1219 * include/bits/stl_tree.h (_Rb_tree::_M_destroy_node(_Link_type)):
1220 Combine definitions to avoid --detect-odr-violations warning.
1222 * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Use
1223 __is_pow2 to check for valid alignment. Avoid branching when rounding
1224 size to multiple of alignment.
1226 * include/Makefile.am: Install <bit> and <version> for freestanding.
1227 * include/Makefile.in: Regenerate.
1228 * testsuite/17_intro/freestanding.cc: Check for <bit> and <version>.
1231 2018-08-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
1234 * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
1236 * configure: Regenerate.
1238 2018-08-10 Jonathan Wakely <jwakely@redhat.com>
1241 * doc/xml/manual/intro.xml: Document LWG 206 change.
1242 * libsupc++/del_op.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
1243 * libsupc++/del_opa.cc: Likewise.
1244 * libsupc++/del_opant.cc: Likewise.
1245 * libsupc++/del_opnt.cc: Likewise. Call operator delete(ptr) instead
1247 * libsupc++/del_ops.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
1248 * libsupc++/del_opsa.cc: Likewise.
1249 * libsupc++/del_opva.cc: Likewise.
1250 * libsupc++/del_opvant.cc: Likewise.
1251 * libsupc++/del_opvnt.cc: Likewise. Call operator delete[](ptr)
1252 instead of operator delete(ptr).
1253 * libsupc++/del_opvs.cc: Replace _GLIBCXX_USE_NOEXCEPT with noexcept.
1254 * libsupc++/del_opvsa.cc: Likewise.
1255 * libsupc++/new_op.cc: Use __builtin_expect in check for zero size.
1256 * libsupc++/new_opa.cc: Use nullptr instead of literal 0.
1257 * libsupc++/new_opant.cc: Likewise. Replace _GLIBCXX_USE_NOEXCEPT
1259 * libsupc++/new_opnt.cc: Likewise. Call operator new(sz) instead of
1261 * libsupc++/new_opvant.cc: Use nullptr and noexcept.
1262 * libsupc++/new_opvnt.cc: Likewise. Call operator new[](sz) instead of
1263 operator new(sz, nothrow).
1264 * testsuite/18_support/new_nothrow.cc: New test.
1266 2018-08-10 Martin Liska <mliska@suse.cz>
1268 * libsupc++/new_op.cc (new): Remove __builtin_expect as malloc
1269 predictor can handle that.
1270 * libsupc++/new_opa.cc: Likewise.
1271 * libsupc++/new_opnt.cc (new): Likewise.
1273 2018-08-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
1276 * configure.ac: Define HAVE_ALIGNED_ALLOC if building for
1278 * configure: Regenerate.
1280 2018-08-10 Jonathan Wakely <jwakely@redhat.com>
1282 * include/std/deque (std::pmr::deque): Declare alias.
1283 * include/std/forward_list (std::pmr::forward_list): Likewise.
1284 * include/std/list (std::pmr::list): Likewise.
1285 * include/std/map (std::pmr::map, std::pmr::multimap): Likewise.
1286 * include/std/regex (std::pmr::match_results, std::pmr::cmatch)
1287 (std::pmr::smatch, std::pmr::wcmatch, std::pmr::wsmatch): Likewise.
1288 * include/std/set (std::pmr::set, std::pmr::multiset): Likewise.
1289 * include/std/string (std::pmr::basic_string, std::pmr::string)
1290 (std::pmr::u16string, std::pmr::u32string, std::pmr::wstring):
1292 * include/std/unordered_map (std::pmr::unordered_map)
1293 (std::pmr::unordered_multimap): Likewise.
1294 * include/std/unordered_set (std::pmr::unordered_set)
1295 (std::pmr::unordered_multiset): Likewise.
1296 * include/std/vector (std::pmr::vector): Likewise.
1297 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: New test.
1298 * testsuite/23_containers/deque/types/pmr_typedefs.cc: New test.
1299 * testsuite/23_containers/forward_list/pmr_typedefs.cc: New test.
1300 * testsuite/23_containers/list/pmr_typedefs.cc: New test.
1301 * testsuite/23_containers/map/pmr_typedefs.cc: New test.
1302 * testsuite/23_containers/multimap/pmr_typedefs.cc: New test.
1303 * testsuite/23_containers/multiset/pmr_typedefs.cc: New test.
1304 * testsuite/23_containers/set/pmr_typedefs.cc: New test.
1305 * testsuite/23_containers/unordered_map/pmr_typedefs.cc: New test.
1306 * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc: New
1308 * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc: New
1310 * testsuite/23_containers/unordered_set/pmr_typedefs.cc: New test.
1311 * testsuite/23_containers/vector/pmr_typedefs.cc: New test.
1312 * testsuite/28_regex/match_results/pmr_typedefs.cc: New test.
1314 2018-08-08 François Dumont <fdumont@gcc.gnu.org>
1316 * include/bits/stl_algo.h
1317 (__rotate(_Ite, _Ite, _Ite, forward_iterator_tag))
1318 (__rotate(_Ite, _Ite, _Ite, bidirectional_iterator_tag))
1319 (__rotate(_Ite, _Ite, _Ite, random_access_iterator_tag)): Move code
1321 (rotate(_Ite, _Ite, _Ite)): ...here.
1322 (__stable_partition_adaptive(_FIt, _FIt, _Pred, _Dist, _Pointer, _Dist)):
1323 Simplify rotate call.
1324 (__rotate_adaptive(_BIt1, _BIt1, _BIt1, _Dist, _Dist, _Bit2, _Dist)):
1326 (__merge_without_buffer(_BIt, _BIt, _BIt, _Dist, _Dist, _Comp)):
1329 2018-08-08 Jonathan Wakely <jwakely@redhat.com>
1331 * libsupc++/new_opa.cc (aligned_alloc): Declare inside namespace to
1332 avoid clashing with an ::aligned_alloc function that was not detected
1335 * doc/xml/manual/using.xml: Fix markup for empty table entry.
1336 * doc/html/*: Regenerate.
1338 * doc/xml/manual/using.xml: Add missing header to table and fix typo.
1339 * doc/html/*: Regenerate.
1342 * include/bits/fs_dir.h (directory_entry::_M_file_type(error_code&)):
1343 Clear error_code when cached type is used.
1344 * testsuite/27_io/filesystem/directory_entry/86597.cc: New test.
1346 2018-08-07 Jonathan Wakely <jwakely@redhat.com>
1349 * include/std/variant (_Copy_ctor_base::_M_destructive_move): Define
1350 here instead of in _Move_assign_base.
1351 (_Copy_ctor_base<true, _Types...>::_M_destructive_move): Define.
1352 (_Copy_assign_base::operator=): Use _M_destructive_move when changing
1353 the contained value to another alternative.
1354 (_Move_assign_base::operator=): Likewise.
1355 (_Move_assign_base::_M_destructive_move): Remove.
1356 * testsuite/20_util/variant/86874.cc: New test.
1359 * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] (aligned_alloc):
1360 Replace macro with inline function.
1361 [__sun]: Increase alignment to meet memalign precondition.
1362 [!HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN]
1363 (aligned_alloc): Move check for valid alignment to operator new.
1364 Remove redundant check for non-zero size, it's enforced by the caller.
1365 (operator new): Move check for valid alignment here. Use
1366 __builtin_expect on check for zero size.
1368 * config/abi/pre/gnu.ver: Export monotonic_buffer_resource members.
1369 * include/std/memory_resource (monotonic_buffer_resource::release):
1370 Call _M_release_buffers to free buffers.
1371 (monotonic_buffer_resource::do_allocate): Call _M_new_buffer to
1372 allocate a new buffer from upstream.
1373 (monotonic_buffer_resource::_M_new_buffer): Declare.
1374 (monotonic_buffer_resource::_M_release_buffers): Declare.
1375 (monotonic_buffer_resource::_Chunk): Replace definition with
1376 declaration as opaque type.
1377 * src/c++17/memory_resource.cc (monotonic_buffer_resource::_Chunk):
1379 (monotonic_buffer_resource::_M_new_buffer): Define.
1380 (monotonic_buffer_resource::_M_release_buffers): Define.
1382 2018-08-05 François Dumont <fdumont@gcc.gnu.org>
1384 * include/bits/stl_iterator.h: Fix comment.
1386 2018-08-03 Jonathan Wakely <jwakely@redhat.com>
1388 * src/c++11/system_error.cc
1389 (system_error_category::default_error_condition): Add workaround for
1390 ENOTEMPTY and EEXIST having the same value on AIX.
1391 * testsuite/19_diagnostics/error_category/system_category.cc: Add
1392 extra testcases for EDOM, EILSEQ, ERANGE, EEXIST and ENOTEMPTY.
1394 2018-08-01 Jonathan Wakely <jwakely@redhat.com>
1396 * configure: Regenerate.
1397 * configure.ac: Add -D_GLIBCXX_ASSERTIONS to default DEBUG_FLAGS.
1398 * src/c++11/futex.cc: Use __glibcxx_assert instead of
1399 _GLIBCXX_DEBUG_ASSERT.
1401 2018-08-01 Mike Crowe <mac@mcrowe.com>
1403 * include/std/condition_variable (wait_for): Use steady_clock.
1405 2018-08-01 Mike Crowe <mac@mcrowe.com>
1407 * include/std/condition_variable (wait_until): Only report timeout
1408 if we really have timed out when measured against the
1409 caller-supplied clock.
1410 * testsuite/30_threads/condition_variable/members/2.cc: Add test
1411 case to confirm above behaviour.
1413 2018-08-01 Jonathan Wakely <jwakely@redhat.com>
1416 * src/c++11/system_error.cc
1417 (system_error_category::default_error_condition): New override to
1418 check for POSIX errno values.
1419 * testsuite/19_diagnostics/error_category/generic_category.cc: New
1420 * testsuite/19_diagnostics/error_category/system_category.cc: New
1423 2018-07-31 Jonathan Wakely <jwakely@redhat.com>
1426 * include/bits/stl_pair.h (__pair_base): New class with deleted copy
1427 assignment operator.
1428 (pair): Derive from __pair_base.
1429 (pair::operator=): Remove deleted overload.
1430 * python/libstdcxx/v6/printers.py (StdPairPrinter): New pretty printer
1431 so that new base class isn't shown in GDB.
1432 * testsuite/20_util/pair/86751.cc: New test.
1433 * testsuite/20_util/pair/ref_assign.cc: New test.
1435 * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
1436 (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Move definitions here.
1437 (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Likewise. Use !__is_identifier
1438 instead of __has_builtin.
1439 * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
1440 (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Remove definitions from here.
1441 * include/std/version [!_GLIBCXX_HAS_GTHREADS]
1442 (__cpp_lib_shared_timed_mutex, __cpp_lib_scoped_lock)
1443 (__cpp_lib_shared_mutex): Don't define when Gthreads not in use.
1444 [!_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP]
1445 (__cpp_lib_has_unique_object_representations): Don't define when
1446 builtin not available.
1447 [!_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE] (__cpp_lib_is_aggregate):
1449 [!_GLIBCXX_HAVE_BUILTIN_LAUNDER] (__cpp_lib_launder): Likewise.
1450 * libsupc++/new (_GLIBCXX_HAVE_BUILTIN_LAUNDER): Remove definition
1453 * doc/xml/manual/test.xml: Improve documentation on writing tests for
1455 * doc/xml/manual/using.xml: Document all headers for C++11 and later.
1456 * doc/html/*: Regenerate.
1458 * include/ext/pointer.h [__cplusplus >= 201103L]
1459 (_Pointer_adapter::operator bool): Add explicit conversion operator
1460 to replace safe bool idiom.
1462 2018-07-30 Jonathan Wakely <jwakely@redhat.com>
1465 * include/bits/stl_iterator.h (reverse_iterator::operator->): Call
1466 _S_to_pointer (LWG 1052, LWG 2118).
1467 (reverse_iterator::_S_to_pointer): Define overloaded helper functions.
1468 * testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
1469 * testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.
1471 * libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
1472 workaround for aligned_alloc bug on AIX.
1473 * testsuite/18_support/new_aligned.cc: New test.
1475 2018-07-26 Marek Polacek <polacek@redhat.com>
1477 * testsuite/30_threads/condition_variable_any/cond.cc: New.
1479 2018-07-26 Marek Polacek <polacek@redhat.com>
1481 * src/c++98/locale_init.cc: Fix #ifdef condition.
1483 2018-07-26 Jonathan Wakely <jwakely@redhat.com>
1485 * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add
1486 dg-require-cstdint directive.
1487 * testsuite/20_util/allocator/overaligned.cc: Likewise.
1488 * testsuite/20_util/any/cons/aligned.cc: Likewise.
1489 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise.
1490 * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise.
1491 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
1493 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
1494 * testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
1495 * testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
1496 * testsuite/25_algorithms/make_heap/complexity.cc: Likewise.
1497 * testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and
1498 random_device effective-target.
1499 * testsuite/25_algorithms/push_heap/complexity.cc: Likewise.
1500 * testsuite/25_algorithms/sample/1.cc: Require cstdint.
1501 * testsuite/25_algorithms/sample/2.cc: Likewise.
1502 * testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint
1504 * testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
1506 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
1508 * testsuite/26_numerics/random/discard_block_engine/requirements/
1509 constexpr_data.cc: Likewise.
1510 * testsuite/26_numerics/random/discard_block_engine/requirements/
1511 constexpr_functions.cc: Likewise.
1512 * testsuite/26_numerics/random/independent_bits_engine/requirements/
1513 constexpr_functions.cc: Likewise.
1514 * testsuite/26_numerics/random/linear_congruential_engine/requirements/
1515 constexpr_data.cc: Likewise.
1516 * testsuite/26_numerics/random/linear_congruential_engine/requirements/
1517 constexpr_functions.cc: Likewise.
1518 * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
1519 constexpr_data.cc: Likewise.
1520 * testsuite/26_numerics/random/mersenne_twister_engine/requirements/
1521 constexpr_functions.cc: Likewise.
1522 * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
1523 * testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise.
1524 * testsuite/26_numerics/random/shuffle_order_engine/requirements/
1525 constexpr_data.cc: Add dg-require-cstdint directive.
1526 * testsuite/26_numerics/random/shuffle_order_engine/requirements/
1527 constexpr_functions.cc: Likewise.
1528 * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
1529 constexpr_data.cc: Likewise.
1530 * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
1531 constexpr_functions.cc: Likewise.
1532 * testsuite/26_numerics/random/uniform_real_distribution/operators/
1534 * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise.
1535 * testsuite/experimental/algorithm/sample-2.cc: Likewise.
1536 * testsuite/experimental/algorithm/sample.cc: Likewise.
1537 * testsuite/experimental/algorithm/search.cc: Likewise.
1538 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
1539 * testsuite/experimental/any/cons/aligned.cc: Likewise.
1540 * testsuite/experimental/memory_resource/new_delete_resource.cc:
1542 * testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise.
1543 * testsuite/experimental/random/randint.cc: Likewise.
1544 * testsuite/experimental/source_location/1.cc: Likewise.
1545 * testsuite/ext/bitmap_allocator/overaligned.cc: Likewise.
1546 * testsuite/ext/malloc_allocator/overaligned.cc: Likewise.
1547 * testsuite/ext/mt_allocator/overaligned.cc: Likewise.
1548 * testsuite/ext/new_allocator/overaligned.cc: Likewise.
1549 * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
1550 * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
1551 * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
1552 * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
1553 * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
1554 * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
1555 * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
1556 * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
1557 * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
1558 * testsuite/ext/pool_allocator/overaligned.cc: Likewise.
1559 * testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
1560 * testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
1561 * testsuite/ext/throw_allocator/check_delete.cc: Likewise.
1562 * testsuite/ext/throw_allocator/check_new.cc: Likewise.
1563 * testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
1564 * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
1565 * testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
1566 * testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
1567 * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.
1569 * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
1570 * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
1571 * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
1572 * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
1574 * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
1575 * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
1576 * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
1578 * testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
1580 * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
1582 * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
1583 * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
1584 * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
1585 * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
1586 * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
1587 * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
1589 * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
1591 * testsuite/30_threads/recursive_timed_mutex/dest/
1592 destructor_locked.cc: Likewise.
1593 * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
1594 * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
1595 * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
1597 * testsuite/30_threads/recursive_timed_mutex/native_handle/
1598 typesizes.cc: Likewise.
1599 * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
1601 * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
1603 * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
1605 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
1607 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
1609 * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
1611 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
1613 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
1615 * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
1616 * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
1617 * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
1618 * testsuite/30_threads/scoped_lock/requirements/
1619 explicit_instantiation.cc: Likewise.
1620 * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
1621 * testsuite/30_threads/shared_future/cons/assign.cc: Likewise.
1622 * testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
1623 * testsuite/30_threads/shared_future/cons/copy.cc: Likewise.
1624 * testsuite/30_threads/shared_future/cons/default.cc: Likewise.
1625 * testsuite/30_threads/shared_future/cons/move.cc: Likewise.
1626 * testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise.
1627 * testsuite/30_threads/shared_future/members/45133.cc: Likewise.
1628 * testsuite/30_threads/shared_future/members/get.cc: Likewise.
1629 * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
1630 * testsuite/30_threads/shared_future/members/valid.cc: Likewise.
1631 * testsuite/30_threads/shared_future/members/wait.cc: Likewise.
1632 * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
1633 * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
1634 * testsuite/30_threads/shared_future/requirements/
1635 explicit_instantiation.cc: Likewise.
1636 * testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
1637 * testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
1638 * testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
1639 * testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
1640 * testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
1641 * testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
1642 * testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
1643 * testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
1644 * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
1645 * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
1646 * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
1647 * testsuite/30_threads/shared_lock/requirements/
1648 explicit_instantiation.cc: Likewise.
1649 * testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise.
1650 * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
1651 * testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise.
1652 * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
1653 * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
1655 * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
1656 * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
1657 * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
1658 * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
1659 * testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc: Likewise.
1660 * testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc: Likewise.
1661 * testsuite/30_threads/shared_timed_mutex/requirements/
1662 standard_layout.cc: Likewise.
1663 * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
1664 * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
1665 * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
1666 * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
1667 * testsuite/30_threads/this_thread/1.cc: Likewise.
1668 * testsuite/30_threads/this_thread/2.cc: Likewise.
1669 * testsuite/30_threads/this_thread/3.cc: Likewise.
1670 * testsuite/30_threads/this_thread/4.cc: Likewise.
1671 * testsuite/30_threads/this_thread/58038.cc: Likewise.
1672 * testsuite/30_threads/thread/70503.cc: Likewise.
1673 * testsuite/30_threads/thread/84532.cc: Likewise.
1674 * testsuite/30_threads/thread/adl.cc: Likewise.
1675 * testsuite/30_threads/thread/cons/1.cc: Likewise.
1676 * testsuite/30_threads/thread/cons/2.cc: Likewise.
1677 * testsuite/30_threads/thread/cons/3.cc: Likewise.
1678 * testsuite/30_threads/thread/cons/4.cc: Likewise.
1679 * testsuite/30_threads/thread/cons/49668.cc: Likewise.
1680 * testsuite/30_threads/thread/cons/5.cc: Likewise.
1681 * testsuite/30_threads/thread/cons/6.cc: Likewise.
1682 * testsuite/30_threads/thread/cons/7.cc: Likewise.
1683 * testsuite/30_threads/thread/cons/8.cc: Likewise.
1684 * testsuite/30_threads/thread/cons/84535.cc: Likewise.
1685 * testsuite/30_threads/thread/cons/9.cc: Likewise.
1686 * testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
1687 * testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
1688 * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
1689 * testsuite/30_threads/thread/cons/moveable.cc: Likewise.
1690 * testsuite/30_threads/thread/cons/terminate.cc: Likewise.
1691 * testsuite/30_threads/thread/id/operators.cc: Likewise.
1692 * testsuite/30_threads/thread/members/1.cc: Likewise.
1693 * testsuite/30_threads/thread/members/2.cc: Likewise.
1694 * testsuite/30_threads/thread/members/3.cc: Likewise.
1695 * testsuite/30_threads/thread/members/4.cc: Likewise.
1696 * testsuite/30_threads/thread/members/5.cc: Likewise.
1697 * testsuite/30_threads/thread/members/hardware_concurrency.cc:
1699 * testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
1700 * testsuite/30_threads/thread/swap/1.cc: Likewise.
1701 * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
1702 * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
1703 * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
1704 * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
1705 * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
1706 * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
1707 * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
1709 * testsuite/30_threads/timed_mutex/requirements/
1710 standard_layout.cc: Likewise.
1711 * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
1712 * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
1713 * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
1714 * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
1715 * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
1716 * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
1717 * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
1718 * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
1719 * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
1720 * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
1721 * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
1722 * testsuite/30_threads/try_lock/1.cc: Likewise.
1723 * testsuite/30_threads/try_lock/2.cc: Likewise.
1724 * testsuite/30_threads/try_lock/3.cc: Likewise.
1725 * testsuite/30_threads/try_lock/4.cc: Likewise.
1726 * testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
1727 * testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
1728 * testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
1729 * testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
1730 * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
1731 * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
1732 * testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
1733 * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
1734 * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
1735 * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
1736 * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
1737 * testsuite/30_threads/unique_lock/requirements/
1738 explicit_instantiation.cc: Likewise.
1739 * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.
1741 * testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint
1743 * testsuite/30_threads/async/49668.cc: Likewise.
1744 * testsuite/30_threads/async/54297.cc: Likewise.
1745 * testsuite/30_threads/async/84532.cc: Likewise.
1746 * testsuite/30_threads/async/any.cc: Likewise.
1747 * testsuite/30_threads/async/async.cc: Likewise.
1748 * testsuite/30_threads/async/except.cc: Likewise.
1749 * testsuite/30_threads/async/forced_unwind.cc: Likewise.
1750 * testsuite/30_threads/async/launch.cc: Likewise.
1751 * testsuite/30_threads/async/lwg2021.cc: Likewise.
1752 * testsuite/30_threads/async/sync.cc: Likewise.
1753 * testsuite/30_threads/call_once/39909.cc: Likewise.
1754 * testsuite/30_threads/call_once/49668.cc: Likewise.
1755 * testsuite/30_threads/call_once/60497.cc: Likewise.
1756 * testsuite/30_threads/call_once/call_once1.cc: Likewise.
1757 * testsuite/30_threads/call_once/constexpr.cc: Likewise.
1758 * testsuite/30_threads/call_once/dr2442.cc: Likewise.
1759 * testsuite/30_threads/call_once/once_flag.cc: Likewise.
1760 * testsuite/30_threads/condition_variable/54185.cc: Likewise.
1761 * testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
1762 * testsuite/30_threads/condition_variable/cons/assign_neg.cc:
1764 * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
1765 * testsuite/30_threads/condition_variable/members/1.cc: Likewise.
1766 * testsuite/30_threads/condition_variable/members/2.cc: Likewise.
1767 * testsuite/30_threads/condition_variable/members/3.cc: Likewise.
1768 * testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
1769 * testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
1770 * testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
1772 * testsuite/30_threads/condition_variable/requirements/
1773 standard_layout.cc: Likewise.
1774 * testsuite/30_threads/condition_variable/requirements/typedefs.cc:
1776 * testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
1777 * testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
1778 * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
1779 * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
1781 * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
1783 * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
1784 * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
1785 * testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
1786 * testsuite/30_threads/future/cons/constexpr.cc: Likewise.
1787 * testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
1788 * testsuite/30_threads/future/cons/default.cc: Likewise.
1789 * testsuite/30_threads/future/cons/move.cc: Likewise.
1790 * testsuite/30_threads/future/cons/move_assign.cc: Likewise.
1791 * testsuite/30_threads/future/members/45133.cc: Likewise.
1792 * testsuite/30_threads/future/members/get.cc: Likewise.
1793 * testsuite/30_threads/future/members/get2.cc: Likewise.
1794 * testsuite/30_threads/future/members/share.cc: Likewise.
1795 * testsuite/30_threads/future/members/valid.cc: Likewise.
1796 * testsuite/30_threads/future/members/wait.cc: Likewise.
1797 * testsuite/30_threads/future/members/wait_for.cc: Likewise.
1798 * testsuite/30_threads/future/members/wait_until.cc: Likewise.
1799 * testsuite/30_threads/future/requirements/explicit_instantiation.cc:
1801 * testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
1803 * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
1804 * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
1805 * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
1806 * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
1807 * testsuite/30_threads/lock/1.cc: Likewise.
1808 * testsuite/30_threads/lock/2.cc: Likewise.
1809 * testsuite/30_threads/lock/3.cc: Likewise.
1810 * testsuite/30_threads/lock/4.cc: Likewise.
1811 * testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
1812 * testsuite/30_threads/lock_guard/requirements/
1813 explicit_instantiation.cc: Likewise.
1814 * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
1815 * testsuite/30_threads/mutex/cons/1.cc: Likewise.
1816 * testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
1817 * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
1818 * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
1819 * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
1820 * testsuite/30_threads/mutex/lock/1.cc: Likewise.
1821 * testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
1822 * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
1823 * testsuite/30_threads/mutex/requirements/standard_layout.cc::
1825 * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
1826 * testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
1827 * testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
1828 * testsuite/30_threads/mutex/unlock/1.cc: Likewise.
1829 * testsuite/30_threads/mutex/unlock/2.cc: Likewise.
1830 * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
1831 * testsuite/30_threads/packaged_task/49668.cc: Likewise.
1832 * testsuite/30_threads/packaged_task/60564.cc: Likewise.
1833 * testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
1834 * testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
1835 * testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
1836 * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
1837 * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
1838 * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
1839 * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
1840 * testsuite/30_threads/packaged_task/cons/assign_neg.cc: Likewise.
1841 * testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
1842 * testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
1843 * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
1844 * testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
1846 * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
1847 * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
1848 * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
1849 * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
1850 * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
1851 * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
1852 * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
1853 * testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
1854 * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
1855 * testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
1856 * testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
1857 * testsuite/30_threads/packaged_task/requirements/
1858 explicit_instantiation.cc: Likewise.
1859 * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
1860 * testsuite/30_threads/promise/60966.cc: Likewise.
1861 * testsuite/30_threads/promise/69106.cc: Likewise.
1862 * testsuite/30_threads/promise/cons/1.cc: Likewise.
1863 * testsuite/30_threads/promise/cons/alloc.cc: Likewise.
1864 * testsuite/30_threads/promise/cons/alloc2.cc: Likewise.
1865 * testsuite/30_threads/promise/cons/alloc_min.cc: Likewise.
1866 * testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
1867 * testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
1868 * testsuite/30_threads/promise/cons/move.cc: Likewise.
1869 * testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
1870 * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
1871 * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
1872 * testsuite/30_threads/promise/members/get_future.cc: Likewise.
1873 * testsuite/30_threads/promise/members/get_future2.cc: Likewise.
1874 * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
1875 * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
1876 * testsuite/30_threads/promise/members/set_value.cc: Likewise.
1877 * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
1878 * testsuite/30_threads/promise/members/set_value3.cc: Likewise.
1879 * testsuite/30_threads/promise/members/swap.cc: Likewise.
1880 * testsuite/30_threads/promise/requirements/explicit_instantiation.cc:
1882 * testsuite/30_threads/promise/uses_allocator.cc: Likewise.
1884 * testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
1886 * testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive.
1887 * testsuite/20_util/duration/arithmetic/1.cc: Likewise.
1888 * testsuite/20_util/duration/arithmetic/2.cc: Likewise.
1889 * testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise.
1890 * testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise.
1891 * testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
1892 * testsuite/20_util/duration/comparison_operators/1.cc: Likewise.
1893 * testsuite/20_util/duration/cons/1.cc: Likewise.
1894 * testsuite/20_util/duration/cons/1_neg.cc: Likewise.
1895 * testsuite/20_util/duration/cons/2.cc: Likewise.
1896 * testsuite/20_util/duration/cons/54025.cc: Likewise.
1897 * testsuite/20_util/duration/cons/dr974_neg.cc: Likewise.
1898 * testsuite/20_util/duration/requirements/explicit_instantiation/
1899 explicit_instantiation.cc: Likewise.
1900 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
1901 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
1902 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
1903 * testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise.
1904 * testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
1905 * testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
1906 * testsuite/20_util/ratio/comparisons/comp3.cc: Likewise.
1907 * testsuite/20_util/ratio/cons/cons1.cc: Likewise.
1908 * testsuite/20_util/ratio/operations/45866.cc: Likewise.
1909 * testsuite/20_util/ratio/operations/47913.cc: Likewise.
1910 * testsuite/20_util/ratio/operations/53840.cc: Likewise.
1911 * testsuite/20_util/ratio/operations/ops1.cc: Likewise.
1912 * testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
1913 * testsuite/20_util/system_clock/1.cc: Likewise.
1914 * testsuite/20_util/time_point/1.cc: Likewise.
1915 * testsuite/20_util/time_point/2.cc: Likewise.
1916 * testsuite/20_util/time_point/3.cc: Likewise.
1917 * testsuite/20_util/time_point/requirements/explicit_instantiation/
1918 explicit_instantiation.cc: Likewise.
1919 * testsuite/21_strings/basic_string/requirements/
1920 explicit_instantiation/char16_t/1.cc: Likewise.
1921 * testsuite/21_strings/basic_string/requirements/
1922 explicit_instantiation/char32_t/1.cc: Likewise.
1923 * testsuite/21_strings/basic_string_view/requirements/
1924 explicit_instantiation/char16_t/1.cc: Likewise.
1925 * testsuite/21_strings/basic_string_view/requirements/
1926 explicit_instantiation/char32_t/1.cc: Likewise.
1927 * testsuite/21_strings/char_traits/requirements/
1928 explicit_instantiation/char16_t/1.cc: Likewise.
1929 * testsuite/21_strings/char_traits/requirements/
1930 explicit_instantiation/char32_t/1.cc: Likewise.
1931 * testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
1932 * testsuite/22_locale/codecvt/char16_t.cc: Likewise.
1933 * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
1934 * testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc:
1936 * testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
1938 * testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
1940 * testsuite/22_locale/codecvt/utf8.cc: Likewise.
1941 * testsuite/23_containers/vector/bool/72847.cc: Likewise.
1942 * testsuite/23_containers/vector/debug/multithreaded_swap.cc:
1944 * testsuite/experimental/string_view/requirements/
1945 explicit_instantiation/char16_t/1.cc: Likewise.
1946 * testsuite/experimental/string_view/requirements/
1947 explicit_instantiation/char32_t/1.cc: Likewise.
1948 * testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/
1950 * testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
1953 * include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1954 (random_condition, throw_value_random, throw_allocator_random)
1955 (std::hash<throw_value_random>): Do not define when <tr1/random> is
1957 * src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not
1958 define transactional memory support when <stdint.h> is not usable.
1960 * include/bits/hashtable_policy.h (__detail::__clp2): Use faster
1961 implementation that doesn't depend on <stdint.h> types.
1962 * include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use
1963 std::size_t when std::uintptr_t is not usable.
1964 [!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable)
1965 (undeclare_reachable, declare_no_pointers, undeclare_no_pointers):
1966 Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
1968 * include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1969 (hash<u16string>, hash<u32string>): Remove dependency on
1970 _GLIBCXX_USE_C99_STDINT_TR1.
1971 * include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1972 (char_traits<char16_t>, char_traits<char32_t>): Remove dependency on
1973 _GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and
1974 __UINT_LEAST32_TYPE__ or make_unsigned when <stdint.h> is not usable.
1975 * include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1976 (codecvt<char16_t, char, mbstate_t>)
1977 (codecvt<char32_t, char, mbstate_t>)
1978 (codecvt_byname<char16_t, char, mbstate_t>)
1979 (codecvt_byname<char32_t, char, mbstate_t>): Remove dependency
1980 on _GLIBCXX_USE_C99_STDINT_TR1.
1981 * include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1982 (_GLIBCXX_NUM_UNICODE_FACETS): Likewise.
1983 * include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1984 (char_traits<char16_t>, char_traits<char32_t>)
1985 (basic_string<char16_t>, basic_string<char32_t>): Remove dependency
1986 on _GLIBCXX_USE_C99_STDINT_TR1.
1987 * include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
1988 (u16string_view, u32string_view, hash<u16string_view>)
1989 (hash<u32string_view>, operator""sv(const char16_t, size_t))
1990 (operator""sv(const char32_t, size_t)): Likewise.
1991 * include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1992 (hash<__u16vstring>, hash<__u32vstring>): Likewise.
1993 * include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
1994 (__u16vstring, __u16sso_string, __u16rc_string, __u32vstring)
1995 (__u32sso_string, __u32rc_string): Likewise.
1996 * include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode)
1997 (codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise.
1998 * include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
1999 (u16string_view, u32string_view, hash<u16string_view>)
2000 (hash<u32string_view>, operator""sv(const char16_t, size_t))
2001 (operator""sv(const char32_t, size_t)): Likewise.
2002 * src/c++11/codecvt.cc: Likewise.
2003 * src/c++98/locale_init.cc: Likewise.
2004 * src/c++98/localename.cc: Likewise.
2006 * include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2007 (__atomic_futex_unsigned_base): Remove dependency on
2008 _GLIBCXX_USE_C99_STDINT_TR1 macro.
2009 * include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1]
2010 (unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1.
2011 * include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t)
2012 (uintmax_t): Define using predefined macros.
2013 * include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration)
2014 (time_point, system_clock, high_resolution_clock, steady_clock): Remove
2015 dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro.
2016 (nanoseconds, microseconds, milliseconds, seconds, minutes, hours):
2017 [!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or
2018 long long when <stdint.h> is not usable.
2019 * include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1]
2020 (condition_variable, condition_variable_any): Remove dependency on
2021 _GLIBCXX_USE_C99_STDINT_TR1.
2022 * include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise)
2023 (packaged_task, async): Likewise.
2024 * include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex)
2025 (timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock)
2026 (once_flag, call_once): Likewise.
2027 * include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise.
2028 * include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1]
2029 (shared_mutex, shared_timed_mutex, shared_lock): Likewise.
2030 * include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread)
2031 (this_thread::get_id, this_thread::yield, this_thread::sleep_for)
2032 (this_thread::sleep_until): Likewise.
2033 * src/c++11/chrono.cc: Remove dependency on
2034 _GLIBCXX_USE_C99_STDINT_TR1 macro.
2035 * src/c++11/condition_variable.cc: Likewise.
2036 * src/c++11/futex.cc: Likewise.
2037 * src/c++11/future.cc: Likewise.
2038 * src/c++11/mutex.cc: Likewise.
2039 * src/c++11/thread.cc: Likewise.
2040 * testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error.
2041 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
2042 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
2043 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
2044 * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
2045 * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
2047 2018-07-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2050 * testsuite/experimental/memory_resource/new_delete_resource.cc:
2051 xfail execution on 32-bit Solaris/x86.
2053 2018-07-26 Marc Glisse <marc.glisse@inria.fr>
2055 * include/bits/stl_vector.h (_Vector_impl_data::_M_copy_data): New.
2056 (_Vector_impl_data::_M_swap_data): Use _M_copy_data.
2057 (vector::_M_move_assign): Reorder the swaps.
2059 2018-07-26 Jonathan Wakely <jwakely@redhat.com>
2062 * testsuite/20_util/monotonic_buffer_resource/release.cc: Request
2063 same alignment for post-release allocation.
2065 2018-07-25 Jonathan Wakely <jwakely@redhat.com>
2068 * testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
2069 buffer being misaligned and so returned pointer not being at start.
2071 * include/experimental/memory_resource: Include <cstddef> header.
2073 * acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
2074 * src/Makefile.am: Add comment.
2075 * src/c++17/Makefile.in: Regenerate.
2077 * include/Makefile.am: Add new <bits/unique_lock.h> header.
2078 * include/Makefile.in: Regenerate.
2079 * include/bits/std_mutex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (mutex)
2080 (lock_guard): Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
2081 (unique_lock): Move definition to ...
2082 * include/bits/unique_lock.h: New header.
2083 [!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Define unconditionally.
2084 [_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock(mutex_type&, time_point))
2085 (unique_lock(mutex_type&, duration), unique_lock::try_lock_until)
2086 (unique_lock::try_lock_for): Define only when <chrono> is usable.
2087 * include/std/condition_variable: Include <bits/unique_lock.h>.
2088 * include/std/mutex: Likewise.
2090 2018-07-24 Jonathan Wakely <jwakely@redhat.com>
2092 * config/abi/pre/gnu.ver: Export new symbols.
2093 * configure: Regenerate.
2094 * include/Makefile.am: Add new <memory_resource> header.
2095 * include/Makefile.in: Regenerate.
2096 * include/precompiled/stdc++.h: Include <memory_resource> for C++17.
2097 * include/std/memory_resource: New header.
2098 (memory_resource, polymorphic_allocator, new_delete_resource)
2099 (null_memory_resource, set_default_resource, get_default_resource)
2100 (pool_options, monotonic_buffer_resource): Define.
2101 * src/Makefile.am: Add c++17 directory.
2102 * src/Makefile.in: Regenerate.
2103 * src/c++11/Makefile.am: Fix comment.
2104 * src/c++17/Makefile.am: Add makefile for new sub-directory.
2105 * src/c++17/Makefile.in: Generate.
2106 * src/c++17/memory_resource.cc: New.
2107 (newdel_res_t, null_res_t, constant_init, newdel_res, null_res)
2108 (default_res, new_delete_resource, null_memory_resource)
2109 (set_default_resource, get_default_resource): Define.
2110 * testsuite/20_util/memory_resource/1.cc: New test.
2111 * testsuite/20_util/memory_resource/2.cc: New test.
2112 * testsuite/20_util/monotonic_buffer_resource/1.cc: New test.
2113 * testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test.
2114 * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test.
2115 * testsuite/20_util/monotonic_buffer_resource/release.cc: New test.
2116 * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
2118 * testsuite/20_util/polymorphic_allocator/1.cc: New test.
2119 * testsuite/20_util/polymorphic_allocator/resource.cc: New test.
2120 * testsuite/20_util/polymorphic_allocator/select.cc: New test.
2121 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
2122 Define concrete memory resource for testing.
2123 (__gnu_test::default_resource_mgr): Define RAII helper for changing
2127 * include/bits/stl_algobase.h (__niter_wrap<_Iterator>): Pass unused
2128 parameter by reference, to avoid copying invalid iterators.
2129 * testsuite/25_algorithms/copy/86658.cc: New test.
2131 * include/std/bit (__countl_zero, __countr_zero, __popcount): Use
2132 local variables for number of digits instead of type aliases.
2133 (__log2p1): Remove redundant branch also checked in __countl_zero.
2135 * include/bits/uses_allocator.h (__is_erased_or_convertible): Reorder
2136 conditions. Add comments.
2137 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error line.
2138 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
2139 * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
2141 * include/bits/uses_allocator.h (__is_erased_or_convertible): Remove.
2142 (__uses_allocator_helper): Check conditions directly instead of
2143 using __is_erased_or_convertible.
2145 * include/experimental/memory_resource: Adjust comments and
2147 (__resource_adaptor_imp): Add second template parameter for type of
2148 memory resource base class.
2149 (memory_resource): Define default constructor, destructor, copy
2150 constructor and copy assignment operator as defaulted.
2153 * include/experimental/memory_resource (__get_default_resource): Use
2154 placement new to create an object with dynamic storage duration.
2156 2018-07-23 Jonathan Wakely <jwakely@redhat.com>
2159 * include/experimental/memory_resource
2160 (__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion.
2161 (__resource_adaptor_common::__guaranteed_alignment): New helper to
2162 give maximum alignment an allocator guarantees. Specialize for known
2163 allocators using new and malloc.
2164 (__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment.
2165 (__resource_adaptor_imp::do_deallocate): Likewise.
2166 * testsuite/experimental/memory_resource/new_delete_resource.cc:
2167 Check that new and delete are called with expected sizes.
2169 2018-07-20 Jonathan Wakely <jwakely@redhat.com>
2172 * include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
2175 2018-07-20 Fangrui Song <maskray@google.com>
2177 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
2178 _GLIBCXX_VISIBILITY(default).
2180 2018-07-20 Jonathan Wakely <jwakely@redhat.com>
2183 * include/std/version: Move __cpp_lib_list_remove_return_type macro.
2185 2018-07-19 Jonathan Wakely <jwakely@redhat.com>
2187 * include/std/type_traits (__is_member_object_pointer_helper): Use
2188 __not_<is_function<_Tp>>::type instead of integral_constant.
2189 (__is_member_function_pointer_helper): Likewise for
2190 is_function<_Tp>::type.
2191 (is_compund): Likewise for __not_<is_fundamental<_Tp>>::type.
2192 (__do_is_nt_destructible_impl): Use __bool_constant and reindent.
2193 (is_trivially_constructible): Remove redundant use of
2195 (__is_trivially_copy_assignable_impl): Remove redundant use of
2197 (__is_trivially_move_assignable_impl): Remove redundant use of
2199 (is_trivially_destructible): Use __bool_constant.
2200 * testsuite/20_util/is_trivially_assignable/value.cc: Add some more
2201 tests for scalar types.
2203 2018-07-19 Glen Joseph Fernandes <glenjofe@gmail.com>
2205 * include/bits/stl_algobase.h (__copy_move_a): Used
2206 __is_trivially_copyable.
2207 (__copy_move_backward_a): Likewise.
2208 * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
2211 2018-07-17 Jonathan Wakely <jwakely@redhat.com>
2214 * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Don't define WERROR.
2215 (GLIBCXX_EXPORT_FLAGS): Use -Wabi=2 instead of -Wabi.
2216 * configure: Regenerate.
2217 * configure.ac: Change GLIBCXX_ENABLE_WERROR default to "no".
2218 * doc/Makefile.in: Regenerate.
2219 * fragment.am: Set WERROR_FLAG to -Werror instead of $(WERROR).
2220 * include/Makefile.in: Regenerate.
2221 * libsupc++/Makefile.in: Regenerate.
2222 * po/Makefile.in: Regenerate.
2223 * python/Makefile.in: Regenerate.
2224 * src/Makefile.in: Regenerate.
2225 * src/c++11/Makefile.in: Regenerate.
2226 * src/c++11/debug.cc: Use diagnostic pragmas to suppress warnings
2227 from -Wabi=2 that don't affect exported symbols.
2228 * src/c++98/Makefile.in: Regenerate.
2229 * src/filesystem/Makefile.in: Regenerate.
2230 * testsuite/Makefile.in: Regenerate.
2232 * src/c++11/compatibility-thread-c++0x.cc [_GLIBCXX_SHARED]
2233 (_Async_state_common::_M_join): Simplify use of std::call_once and
2234 corresponding explicit instantiation.
2235 (_Maybe_wrap_member_pointer, _Bind_simple, _Bind_simple_helper)
2236 (__bind_simple): Remove definitions and explicit instantiation that
2237 are not required by exported symbols.
2239 2018-07-16 Jonathan Wakely <jwakely@redhat.com>
2241 * scripts/create_testsuite_files: Fix typo in comment.
2244 * include/bits/shared_ptr.h (less<shared_ptr<_Tp>>): Remove
2245 non-standard partial specialization.
2246 * include/bits/shared_ptr_base.h (_Sp_less): Remove class definition.
2247 (less<__shared_ptr<_Tp, _Lp>): Remove partial specialization.
2248 * testsuite/20_util/shared_ptr/comparison/86537.cc: New test.
2250 2018-07-16 Andreas Krebbel <krebbel@linux.ibm.com>
2252 * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
2253 * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
2254 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
2256 2018-07-06 François Dumont <fdumont@gcc.gnu.org>
2258 * include/debug/functions.h (__gnu_debug::__check_string): Move...
2259 * include/debug/string (__gnu_debug::__check_string): ... here.
2260 (_GLIBCXX_DEBUG_VERIFY_STR_COND_AT): New.
2261 (__glibcxx_check_string_n_constructor): New.
2262 (__gnu_debug::basic_string<>(const _CharT*, size_type, const _Alloc&)):
2264 (__glibcxx_check_string_constructor): New.
2265 (__gnu_debug::basic_string<>(const _CharT*, const _Alloc&)):
2267 * testsuite/21_strings/basic_string/debug/1_neg.cc: New.
2268 * testsuite/21_strings/basic_string/debug/2_neg.cc: New.
2270 2018-07-06 Jonathan Wakely <jwakely@redhat.com>
2272 PR libstdc++/84928 use std::move in <numeric> algorithms
2273 * include/bits/stl_numeric.h (_GLIBCXX_MOVE_IF_20): Define macro to
2274 conditionally move, according to __cplusplus value.
2275 (accumulate, inner_product, partial_sum, adjacent_difference): Use
2276 _GLIBCXX_MOVE_IF_20.
2277 * testsuite/26_numerics/accumulate/lwg2055.cc: New test.
2278 * testsuite/26_numerics/adjacent_difference/lwg2055.cc: New test.
2279 * testsuite/26_numerics/inner_product/lwg2055.cc: New test.
2280 * testsuite/26_numerics/partial_sum/lwg2055.cc: New test.
2282 * config/abi/pre/gnu.ver: Use wildcards to combine related patterns.
2284 P0935R0 Eradicating unnecessarily explicit default constructors
2285 * config/abi/pre/gnu.ver: Tighten existing patterns and export new
2286 default constructor symbols.
2287 * include/std/sstream (basic_stringbuf, basic_istringstream)
2288 (basic_ostringstream, basic_stringstream): Remove default arguments
2289 from explicit constructors taking ios_base::openmode and add separate
2290 non-explicit default constructors.
2291 * testsuite/27_io/basic_istringstream/cons/default.cc: New.
2292 * testsuite/27_io/basic_ostringstream/cons/default.cc: New.
2293 * testsuite/27_io/basic_stringstream/cons/default.cc: New.
2294 * testsuite/27_io/basic_stringbuf/cons/char/default.cc: New.
2295 * testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: New.
2297 * include/std/variant (__accepted_index): Use void_t.
2299 2018-07-05 Jonathan Wakely <jwakely@redhat.com>
2302 * config/abi/pre/gnu.ver: Export move constructors and move
2303 assignment operators for std::logic_error and std::runtime_error.
2304 * include/std/stdexcept: Use _GLIBCXX_NOTHROW instead of
2305 _GLIBCXX_USE_NOEXCEPT.
2306 (logic_error, runtime_error): Declare move constructors and move
2307 assignment operators. When not declared already, define copy
2308 constructors and copy assignment operators as explicit-defaulted.
2309 (domain_error, invalid_argument, length_error, out_of_range)
2310 (overflow_error, underflow_error): Define move constructors and move
2311 assignment operators as explicitly-defaulted.
2312 * libsupc++/exception.h (exception): Likewise.
2313 * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Define
2314 move constructors and move assignment operators as defaulted.
2315 * testsuite/19_diagnostics/stdexcept.cc: Check that constructors and
2316 assignment operators are defined.
2318 * testsuite/21_strings/basic_string/cons/char/deduction.cc: XFAIL for
2320 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2322 * testsuite/21_strings/basic_string/requirements/
2323 explicit_instantiation/debug.cc: Likewise.
2326 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2327 (basic_string::assign(basic_string&&)): Add conditional noexcept
2328 depending on the allocator's is_always_equal property (LWG 2063).
2329 * testsuite/21_strings/basic_string/modifiers/assign/char/
2330 move_assign.cc: Check for non-throwing exception specification.
2331 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
2332 move_assign.cc: Likewise.
2335 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2336 [_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
2337 Add GLIBCXX_NOEXCEPT.
2338 (basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
2339 to depend on the allocator's is_always_equal property (LWG 2063).
2340 (basic_string::swap(basic_string&)): Likewise.
2341 * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
2342 (basic_string::swap(basic_string&)): Likewise.
2343 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
2344 Check is_nothrow_move_assignable.
2345 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
2346 Check is_nothrow_move_assignable.
2347 * testsuite/21_strings/basic_string/cons/char/
2348 noexcept_move_construct.cc: Likewise.
2349 * testsuite/21_strings/basic_string/cons/wchar_t/
2350 noexcept_move_construct.cc: Likewise.
2352 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
2354 P0646R1 Improving the Return Value of Erase-Like Algorithms I
2355 * include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
2357 (forward_list::__remove_return_type): Define typedef as size_type or
2358 void, according to __cplusplus value.
2359 (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
2360 empty, according to __cplusplus value.
2361 (forward_list::remove, forward_list::unique): Use typedef and macro
2362 to change return type and add abi-tag for C++2a.
2363 (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
2364 typedef to change return type for C++2a.
2365 * include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
2366 (forward_list::remove, forward_list::remove_if<Pred>)
2367 (forward_list::unique<BinPred>): Return number of removed elements
2369 * include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
2370 (list::remove, list::unique, list::remove_if<Predicate>)
2371 (list::unique<BinaryPredicate>): Return number of removed elements
2373 * include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
2374 (list::__remove_return_type): Define typedef as size_type or
2375 void, according to __cplusplus value.
2376 (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
2377 empty, according to __cplusplus value.
2378 (list::remove, list::unique): Use typedef and macro to change return
2379 type and add abi-tag for C++2a.
2380 (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
2381 typedef to change return type for C++2a.
2382 * include/std/version (__cpp_lib_list_remove_return_type): Define.
2383 * testsuite/23_containers/forward_list/operations/
2384 remove_cxx20_return.cc: New.
2385 * testsuite/23_containers/forward_list/operations/
2386 unique_cxx20_return.cc: New.
2388 P0458R2 Checking for Existence of an Element in Associative Containers
2389 * include/bits/stl_map.h (map::contains): Add for C++2a.
2390 * include/bits/stl_multimap.h (multimap::contains): Likewise.
2391 * include/bits/stl_multiset.h (multiset::contains): Likewise.
2392 * include/bits/stl_set.h (set::contains): Likewise.
2393 * include/bits/stl_tree.h (__has_is_transparent_t): Define alias.
2394 (_Rb_tree::_M_find_tr, _Rb_tree::_M_count_tr)
2395 (_Rb_tree::_M_lower_bound_tr, _Rb_tree::_M_upper_bound_tr)
2396 (_Rb_tree::_M_equal_range_tr): Use __has_is_transparent_t.
2397 * include/bits/unordered_map.h (unordered_map::contains)
2398 (unordered_multimap::contains): Add for C++2a.
2399 * include/bits/unordered_set.h (unordered_set::contains)
2400 (unordered_multiset::contains): Likewise.
2401 * testsuite/23_containers/map/operations/contains.cc: New.
2402 * testsuite/23_containers/multimap/operations/contains.cc: New.
2403 * testsuite/23_containers/multiset/operations/contains.cc: New.
2404 * testsuite/23_containers/set/operations/contains.cc: New.
2405 * testsuite/23_containers/unordered_map/operations/contains.cc: New.
2406 * testsuite/23_containers/unordered_multimap/operations/contains.cc:
2408 * testsuite/23_containers/unordered_multiset/operations/contains.cc:
2410 * testsuite/23_containers/unordered_set/operations/contains.cc: New.
2412 2018-07-04 François Dumont <fdumont@gcc.gnu.org>
2415 * include/debug/string
2416 (__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
2417 Use __glibcxx_check_insert_range.
2418 * 21_strings/basic_string/cons/char/1.cc: Adapt test to use
2419 __gnu_debug::string when _GLIBCXX_DEBUG.
2420 * 21_strings/basic_string/init-list.cc: Likewise.
2421 * 21_strings/basic_string/modifiers/insert/char/1.cc: Likewise.
2422 * 21_strings/basic_string/modifiers/insert/char/2.cc: Likewise.
2423 * 21_strings/basic_string/modifiers/insert/char/83328.cc: Likewise.
2424 * 21_strings/basic_string/types/1.cc: Likewise.
2426 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
2428 * testsuite/25_algorithms/make_heap/complexity.cc: Require effective
2429 target for std::random_device.
2430 * testsuite/26_numerics/random/random_device/cons/default.cc:
2432 * testsuite/experimental/algorithm/sample-2.cc: Likewise.
2433 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
2434 * testsuite/experimental/random/randint.cc: Likewise.
2435 * testsuite/lib/libstdc++.exp
2436 (check_effective_target_random_device): New proc.
2438 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
2439 Jakub Jelinek <jakub@redhat.com>
2441 * include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.
2443 2018-07-04 Jonathan Wakely <jwakely@redhat.com>
2446 * include/std/type_traits (is_trivially_constructible): Check
2447 is_constructible before __is_trivially_constructible.
2448 * testsuite/20_util/is_trivially_constructible/value.cc: Add more
2449 tests, including negative cases.
2450 * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Use
2451 zero for dg-error lineno.
2452 * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
2455 * include/std/bit (__rotl, __rotr): Avoid branch.
2456 (_If_is_unsigned_integer): Use remove_cv_t.
2457 * testsuite/26_numerics/bit/bitops.count/popcount.cc: New.
2459 2018-07-03 Jonathan Wakely <jwakely@redhat.com>
2461 P0556R3 Integral power-of-2 operations, P0553R2 Bit operations
2462 * include/Makefile.am: Add new header.
2463 * include/Makefile.in: Regenerate.
2464 * include/precompiled/stdc++.h: Include new header.
2465 * include/std/bit: New header.
2466 (__rotl, __rotr, __countl_zero, __countl_one, __countr_zero)
2467 (__countr_one, __popcount, __ispow2, __ceil2, __floor2, __log2p1):
2469 [!__STRICT_ANSI__] (rotl, rotr, countl_zero, countl_one, countr_zero)
2470 (countr_one, popcount): Define for C++2a. Also overload for std::byte.
2471 (ispow2, ceil2, floor2, log2p1): Define for C++2a.
2472 [!__STRICT_ANSI__] (ispow2, ceil2, floor2, log2p1): Overload for
2474 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: New.
2475 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: New.
2476 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: New.
2477 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: New.
2478 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: New.
2479 * testsuite/26_numerics/bit/bitops.rot/rotr.cc: New.
2480 * testsuite/26_numerics/bit/bitops.count/countl_one.cc: New.
2481 * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: New.
2482 * testsuite/26_numerics/bit/bitops.count/countr_one.cc: New.
2483 * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: New.
2485 * include/bits/alloc_traits.h: Remove redundant preprocessor
2488 2018-07-03 François Dumont <fdumont@gcc.gnu.org>
2490 * include/bits/stl_algobase.h (__niter_wrap): New.
2491 (__copy_move_a2(_II, _II, _OI)): Use latter.
2492 (__copy_move_backward_a2(_BI1, _BI1, _BI2)): Likewise.
2493 (fill_n(_OI, _Size, const _Tp&)): Likewise.
2494 (equal(_II1, _II1, _II2)): Use __glibcxx_requires_can_increment.
2495 * include/debug/stl_iterator.h
2496 (std::__niter_base(const __gnu_cxx::_Safe_iterator<
2497 __gnu_cxx::__normal_iterator<>, _Sequence>&)): New declaration.
2498 * include/debug/vector (__niter_base(const __gnu_cxx::_Safe_iterator<
2499 __gnu_cxx::__normal_iterator<>, _Sequence>&)): New.
2501 2018-07-02 Jonathan Wakely <jwakely@redhat.com>
2503 P0758R1 Implicit conversion traits
2504 * include/std/type_traits [__cplusplus > 201703]
2505 (__is_convertible_helper::__is_nothrow_type): Define new member.
2506 (__is_convertible_helper<_From, _To, false>::__test_aux1): Add
2508 (__is_convertible_helper<_From, _To, false>::__test_nothrow)
2509 (__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add
2511 (is_nothrow_convertible, is_nothrow_convertible_v): Define for C++2a.
2512 * testsuite/20_util/is_nothrow_convertible/value.cc: New.
2513 * testsuite/20_util/is_nothrow_convertible/requirements/
2514 explicit_instantiation.cc: New.
2515 * testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc:
2518 P0887R1 The identity metafunction
2519 * include/std/type_traits (type_identity, type_identity_t): Define
2521 * testsuite/20_util/type_identity/requirements/alias_decl.cc: New.
2522 * testsuite/20_util/type_identity/requirements/
2523 explicit_instantiation.cc:New.
2524 * testsuite/20_util/type_identity/requirements/typedefs.cc: New.
2526 * include/bits/regex.h (sub_match::operator string_type): Call str().
2527 (sub_match::compare): Use _M_str() instead of str().
2528 (sub_match::_M_compare): New public function.
2529 (sub_match::__string_view): New helper type.
2530 (sub_match::_M_str): New overloaded functions to avoid creating a
2531 string_type object when not needed.
2532 (operator==, operator!=, operator<, operator>, operator<=, operator>=):
2533 Use sub_match::_M_compare instead of creating string_type objects.
2534 Fix Doxygen comments.
2535 * include/bits/regex_compiler.h (__has_contiguous_iter): Remove.
2536 (__is_contiguous_normal_iter): Rename to __is_contiguous_iter and
2538 (__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
2540 * include/std/type_traits (__enable_if_t): Define for C++11.
2541 * testsuite/28_regex/sub_match/compare.cc: New.
2542 * testsuite/util/testsuite_iterators.h (remove_cv): Add transformation
2544 (input_iterator_wrapper): Use remove_cv for value_type argument of
2545 std::iterator base class.
2547 2018-06-29 Jonathan Wakely <jwakely@redhat.com>
2549 * testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc:
2550 Add whitespace to dejagnu directive.
2551 * testsuite/23_containers/array/element_access/at_neg.cc: Likewise.
2553 2018-06-27 François Dumont <fdumont@gcc.gnu.org>
2555 * include/bits/stl_vector.h
2556 (struct _Vector_base<>::_Vector_impl_data): New.
2557 (struct _Vector_base<>::_Vector_impl): Inherit from latter.
2558 (_Vector_base<>::_Vector_impl::_M_swap_data): Move...
2559 (_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here.
2560 (_Vector_base<>::_Vector_impl()): Add noexcept qualification.
2561 (_Vector_base<>::_Vector_impl(_Vector_impl&&)): New.
2562 (_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New.
2563 (_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter.
2564 (_Vector_base()): Default.
2565 (_Vector_base(_Vector_base&&)): Default.
2566 (_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete.
2567 (_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete.
2568 (_Vector_base::_M_create_storage(size_t)): Make protected.
2569 (vector()): Default.
2570 (vector(vector&&)): Default.
2571 (vector(vector&&, const allocator_type&, true_type)): New.
2572 (vector(vector&&, const allocator_type&, false_type)): New.
2573 (vector(vector&&, const allocator_type&)): Use latters.
2574 (vector(_InputIte, _InputIte, const allocator_type&)): Call
2575 _M_range_initialize directly.
2576 * include/debug/vector
2577 (vector(vector&&, const allocator_type&)): Add noexcept qualification.
2578 * testsuite/23_containers/vector/allocator/default_init.cc: New.
2579 * testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add
2582 2018-06-27 Jonathan Wakely <jwakely@redhat.com>
2584 * include/bits/cpp_type_traits.h [__cplusplus >= 201703]
2585 (__is_byte<byte>): Define specialization for std::byte.
2588 * include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0]
2589 Declare explicit instantiations of COW empty reps and I/O functions.
2591 2018-06-26 David Edelsohn <dje.gcc@gmail.com>
2593 * testsuite/experimental/algorithm/sample-2.cc: Add TLS DejaGNU
2595 * testsuite/experimental/algorithm/shuffle.cc: Likewise.
2597 2018-06-26 Jonathan Wakely <jwakely@redhat.com>
2599 * include/bits/regex.tcc (regex_iterator::operator==): Add missing
2602 2018-06-25 Jonathan Wakely <jwakely@redhat.com>
2605 * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
2606 Replace dict comprehension.
2609 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
2612 * include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
2613 Add try-catch block.
2614 * testsuite/23_containers/vector/cons/86292.cc: New.
2616 * doc/xml/manual/status_cxx2017.xml: Document N4531 status.
2618 * include/experimental/algorithm (sample, shuffle): Add new overloads
2619 using per-thread random number engine.
2620 * testsuite/experimental/algorithm/sample.cc: Simpify and reduce
2621 dependencies by using __gnu_test::test_container.
2622 * testsuite/experimental/algorithm/sample-2.cc: New.
2623 * testsuite/experimental/algorithm/shuffle.cc: New.
2625 2018-06-22 Jonathan Wakely <jwakely@redhat.com>
2627 * config/abi/pre/gnu.ver: Fix __cxx11::basic_string patterns for
2628 different size_t mangling on 32-bit targets.
2631 * include/experimental/memory_resource
2632 (__resource_adaptor_common::_AlignMgr::_M_token_size): Use type large
2633 enough for result of left shift.
2636 * include/bits/basic_string.tcc:
2637 [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI]
2638 (basic_string<char>::_Rep::_S_empty_rep_storage)
2639 (basic_string<wchar_t>::_Rep::_S_empty_rep_storage): Add explicit
2640 instantiation declarations.
2641 [__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable
2642 explicit instantiation declarations.
2643 * testsuite/21_strings/basic_string/cons/char/86138.cc: New.
2644 * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New.
2646 2018-06-21 Jonathan Wakely <jwakely@redhat.com>
2649 * acinclude.m4 (libtool_VERSION): Bump to 6:26:0.
2650 * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 and export new symbol.
2651 * configure: Regenerate.
2652 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
2653 (basic_string::insert(const_iterator, initializer_list<C>)): Add.
2654 [_GLIBCXX_USE_CXX11_ABI && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
2655 (basic_string::insert(iterator, initializer_list<C>)): Suppress
2657 * include/debug/string (basic_string::insert(iterator, C)): Change
2658 first parameter to const_iterator.
2659 (basic_string::insert(iterator, size_type, C)): Likewise. Change
2660 return type to iterator.
2661 (basic_string::insert(iterator, InputIterator, InputIterator)):
2663 (basic_string::insert(iterator, initializer_list<C>)): Change first
2664 parameter to const_iterator and return type to iterator.
2665 * src/c++11/string-inst.cc: Extend comment.
2666 * testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc:
2668 * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
2670 * testsuite/util/testsuite_abi.cc: Add new symbol version.
2672 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
2675 * include/experimental/memory_resource
2676 (__resource_adaptor_imp::do_deallocate): Add missing return.
2677 * testsuite/experimental/memory_resource/new_delete_resource.cc: New.
2678 * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
2679 resource_adaptor with std::allocator, __gnu_cxx::new_allocator and
2680 __gnu_cxx::malloc_allocator.
2683 * include/experimental/memory_resource (__resource_adaptor_common):
2685 (__resource_adaptor_common::_AlignMgr): Helper for obtaining aligned
2686 pointer from unaligned, and vice versa.
2687 (__resource_adaptor_imp::do_allocate): Use _AlignMgr to adjust
2688 allocated pointer to meet alignment request.
2689 (__resource_adaptor_imp::do_deallocate): Use _AlignMgr to retrieve
2690 original pointer for deallocation.
2691 (__resource_adaptor_imp::do_is_equal): Reformat.
2692 (__resource_adaptor_imp::_S_aligned_size): Remove.
2693 (__resource_adaptor_imp::_S_supported): Remove.
2694 (new_delete_resource): Use __gnu_cxx::new_allocator.
2695 * testsuite/experimental/memory_resource/resource_adaptor.cc: Test
2696 extended alignments and use debug_allocator to check for matching
2697 allocate/deallocate pairs.
2699 2018-06-21 François Dumont <fdumont@gcc.gnu.org>
2701 * include/debug/safe_iterator.h
2702 (_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
2703 Compare __x base iterator with a value-initialized iterator of the
2706 2018-06-20 Jonathan Wakely <jwakely@redhat.com>
2709 * include/experimental/memory_resource (__resource_adaptor_imp): Add
2710 static assertions to enforce requirements on pointer types.
2711 (__resource_adaptor_imp::get_allocator()): Add noexcept.
2712 (new_delete_resource, null_memory_resource): Return address of an
2713 object with dynamic storage duration.
2714 (__null_memory_resource): Remove.
2715 * testsuite/experimental/memory_resource/70966.cc: New.
2717 * testsuite/20_util/duration/arithmetic/dr3050.cc: Add new test
2718 missed from recent commit.
2720 2018-06-19 Jonathan Wakely <jwakely@redhat.com>
2722 * include/std/utility: Remove unused <exception> header.
2724 2018-06-18 Jonathan Wakely <jwakely@redhat.com>
2726 LWG 2975 ensure construct(pair<T,U>*, ...) used to construct pairs
2727 * include/std/scoped_allocator (__not_pair): Define SFINAE helper.
2728 (construct(_Tp*, _Args&&...)): Remove from overload set when _Tp is
2729 a specialization of std::pair.
2730 * testsuite/20_util/scoped_allocator/construct_pair.cc: Ensure
2731 pair elements are constructed correctly.
2733 LWG 2989 hide path iostream operators from normal lookup
2734 * include/bits/fs_path.h (operator<<, operator>>): Define inline as
2736 * testsuite/27_io/filesystem/path/io/dr2989.cc: New.
2738 LWG 3050 Fix cv-qualification of convertibility constraints
2739 * include/std/chrono (duration, operator*, operator/, operator%): Use
2740 const-qualified type as source type in is_convertible constraints.
2741 * testsuite/20_util/duration/arithmetic/dr3050.cc: New.
2742 * testsuite/20_util/duration/cons/dr3050.cc: New.
2743 * testsuite/20_util/duration/literals/range.cc: Rename to...
2744 * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
2747 2018-06-18 Maya Rashish <coypu@sdf.org>
2749 * crossconfig.m4: Handle OpenBSD just like NetBSD.
2750 * configure: Rebuilt.
2752 2018-06-18 Jonathan Wakely <jwakely@redhat.com>
2754 P0754R2 <version> header
2755 * include/Makefile.am: Add new header.
2756 * include/Makefile.in: Regenerate.
2757 * include/bits/c++config: Change doxygen comment to suggest <version>
2758 instead of <iosfwd>.
2759 * include/precompiled/stdc++.h: Include <cwchar> and <cwctype>
2760 unconditionally. Add C++17 and C++20 headers.
2761 * include/std/version: New header.
2762 * testsuite/17_intro/headers/c++2017/all_attributes.cc: New.
2763 * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: New.
2764 * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: New.
2765 * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: New.
2766 * testsuite/17_intro/headers/c++2017/operator_names.cc: New.
2767 * testsuite/17_intro/headers/c++2017/stdc++.cc: New.
2768 * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
2770 * testsuite/17_intro/headers/c++2020/all_attributes.cc: New.
2771 * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: New.
2772 * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: New.
2773 * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: New.
2774 * testsuite/17_intro/headers/c++2020/operator_names.cc: New.
2775 * testsuite/17_intro/headers/c++2020/stdc++.cc: New.
2776 * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc:
2778 * testsuite/18_support/headers/version/macros.cc: New.
2779 * testsuite/18_support/headers/version/macros.cc: New.
2781 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when
2782 enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and
2784 * config.h.in: Regenerate.
2785 * configure: Regenerate.
2786 * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink.
2788 LWG 3035. std::allocator's constructors should be constexpr
2789 * include/bits/allocator.h (allocator): Add constexpr to constructors
2790 for C++2a. Replace dynamic exception specifications with NOTHROW
2792 (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
2794 * include/bits/c++config (_GLIBCXX20_CONSTEXPR): Define.
2795 * include/ext/malloc_allocator.h (malloc_allocator): Add constexpr
2796 to constructors for C++2a.
2797 * include/ext/new_allocator.h (new_allocator): Likewise.
2799 2018-06-16 Jonathan Wakely <jwakely@redhat.com>
2801 LWG 3076 basic_string CTAD ambiguity
2802 * doc/xml/manual/intro.xml: Document LWG 3076 change.
2803 * include/bits/basic_string.h
2804 [__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
2805 (basic_string(const _CharT*, const _Alloc&)): Turn into a function
2806 template constrained by _RequireAllocator.
2807 (basic_string(size_type, _CharT, const _Alloc&)): Likewise.
2808 * src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
2810 * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
2812 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2815 2018-06-15 Jonathan Wakely <jwakely@redhat.com>
2818 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2819 (basic_string::data()): Unshare string.
2820 * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
2823 * include/std/string_view (basic_string_view(const CharT*)): Remove
2824 check for null pointer and add nonnull attribute.
2825 (compare(const CharT*), compare(size_type, size_type, const CharT*))
2826 (find(const CharT*, size_type), rfind(const CharT*, size_type))
2827 (find_first_of(const CharT*, size_type))
2828 (find_last_of(const CharT*, size_type))
2829 (find_first_not_of(const CharT*, size_type))
2830 (find_last_not_of(const CharT*, size_type)): Add nonnull attribute.
2831 * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: New.
2832 * testsuite/21_strings/basic_string_view/operations/compare/char/
2834 * testsuite/21_strings/basic_string_view/operations/find/char/
2836 * testsuite/21_strings/basic_string_view/operations/rfind/char/
2840 * include/bits/random.h (random_device(const string&)): Remove
2843 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
2844 define for C++17 and above.
2846 LWG 2993 reference_wrapper<T> conversion from T&&
2847 * doc/xml/manual/intro.xml: Document LWG 2993 change.
2848 * include/bits/refwrap.h (reference_wrapper(_Tp&)): Remove.
2849 (reference_wrapper(_Tp&&)): Remove.
2850 (reference_wrapper<_Up>(_Up&&)): Define new constructor as constrained
2852 (reference_wrapper): Add deduction guide.
2853 * testsuite/20_util/reference_wrapper/deduction.cc: New.
2854 * testsuite/20_util/reference_wrapper/lwg2993.cc: New.
2856 LWG 3039 Unnecessary decay in thread and packaged_task
2857 * include/std/future (__constrain_pkgdtask): Replace with ...
2858 (packaged_task::__not_same): New alias template, using
2859 __remove_cvref_t instead of decay.
2860 * include/std/thread (thread::__not_same): Add comment.
2862 2018-06-14 Jonathan Wakely <jwakely@redhat.com>
2864 LWG 3075 basic_string needs deduction guides from basic_string_view
2865 * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
2866 deduction from string views.
2867 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2870 LWG 3074 make scalar types non-deduced in valarray non-member functions
2871 * include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
2872 scalar parameters to be a non-deduced context.
2873 * include/std/valarray (_DEFINE_BINARY_OPERATOR): Likewise. Adjust
2875 * testsuite/26_numerics/valarray/operators.cc: Test scalar operands.
2876 * testsuite/26_numerics/valarray/transcend.cc: New.
2878 * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
2879 Move back to <utility>.
2880 * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
2883 P0935R0 Eradicating unnecessarily explicit default constructors
2884 * include/backward/strstream (strstreambuf): Add non-explicit default
2886 * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
2888 * include/bits/regex.h (match_results): Likewise.
2889 * testsuite/22_locale/conversions/buffer/1.cc: Test for non-explicit
2890 default constructor.
2891 * testsuite/22_locale/conversions/string/1.cc: Likewise.
2892 * testsuite/28_regex/match_results/ctors/char/default.cc: Likewise.
2893 * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
2895 * include/std/tuple (__cpp_lib_tuple_element_t): Move feature test
2896 macro from <utility> and change type to long.
2897 * include/std/utility (__cpp_lib_tuple_element_t): Remove.
2898 * testsuite/20_util/tuple/tuple_element_t.cc: Check for feature test
2901 P0935R0 Eradicating unnecessarily explicit default constructors
2902 * include/bits/random.h (uniform_real_distribution::param_type)
2903 (normal_distribution::param_type, lognormal_distribution::param_type)
2904 (gamma_distribution::param_type, chi_squared_distribution::param_type)
2905 (cauchy_distribution::param_type, fisher_f_distribution::param_type)
2906 (student_t_distribution::param_type)
2907 (bernoulli_distribution::param_type)
2908 (binomial_distribution::param_type)
2909 (geometric_distribution::param_type)
2910 (negative_binomial_distribution::param_type)
2911 (poisson_distribution::param_type)
2912 (exponential_distribution::param_type)
2913 (weibull_distribution::param_type)
2914 (extreme_value_distribution::param_type): Add non-explicit default
2915 constructors. Remove default argument for first parameter of explicit
2917 * include/bits/uniform_int_dist.h
2918 (uniform_int_distribution::param_type): Likewise.
2919 * include/ext/random
2920 (beta_distribution::param_type, rice_distribution::param_type)
2921 (nakagami_distribution::param_type, pareto_distribution::param_type)
2922 (k_distribution::param_type, arcsine_distribution::param_type)
2923 (hoyt_distribution::param_type, triangular_distribution::param_type)
2924 (von_mises_distribution::param_type)
2925 (hypergeometric_distribution::param_type)
2926 (logistic_distribution::param_type)
2927 (uniform_inside_sphere_distribution::param_type): Likewise.
2928 (uniform_on_sphere_distribution::param_type): Make default constructor
2930 * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
2931 Test param_type for non-explicit default constructor.
2932 * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
2934 * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
2936 * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
2938 * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
2940 * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
2942 * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
2944 * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
2946 * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
2948 * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
2950 * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
2952 * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
2954 * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
2956 * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
2958 * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
2960 * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
2962 * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
2964 * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
2966 * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
2968 * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
2970 * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
2971 * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
2972 * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
2973 * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
2975 * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
2976 * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
2977 * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
2978 * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
2980 * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
2981 * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
2982 * testsuite/ext/random/triangular_distribution/cons/default.cc:
2984 * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
2986 * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
2988 * testsuite/ext/random/von_mises_distribution/cons/default.cc:
2991 2018-06-14 Daniel Trebbien <dtrebbien@gmail.com>
2992 Jonathan Wakely <jwakely@redhat.com>
2995 * include/bits/vector.tcc (vector::_M_default_append(size_type)):
2996 Default-construct new elements before moving existing ones.
2997 * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
3000 2018-06-13 Jonathan Wakely <jwakely@redhat.com>
3003 * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
3005 (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
3006 Use node allocator to create and destroy elements.
3007 (forward_list::_Tp_alloc_type): Remove unused typedef.
3008 (forward_list::_Alloc_traits): Use allocator_traits instead of
3009 __gnu_cxx::__alloc_traits.
3011 2018-06-13 François Dumont <fdumont@gcc.gnu.org>
3013 * include/debug/helper_functions.h
3014 (__gnu_debug::_Safe_iterator<>): Add declaration.
3015 (__can_advance(_Ite, _Size)): New.
3016 (__can_advance(const _Safe_iterator<>&, _Size)): Overload declaration.
3017 * include/debug/functions.h
3018 (__gnu_debug::_Safe_iterator<>): Remove declaration.
3019 * include/debug/stl_iterator.h
3020 (__can_advance(const _Safe_iterator<>&)): New definition.
3021 * include/debug/stl_iterator.h
3022 (__can_advance(const std::reverse_iterator<>&, _Size)): New.
3023 (__can_advance(const std::move_iterator<>&, _Size)): New.
3024 * include/debug/macros.h (__glibcxx_check_can_increment): New.
3025 * include/debug/debug.h (__glibcxx_requires_can_increment): New.
3026 * include/bits/stl_algobase.h (fill_n): Use latter.
3027 * testsuite/25_algorithms/fill_n/2.cc: New.
3028 * testsuite/25_algorithms/fill_n/debug/1_neg.cc: New.
3029 * testsuite/25_algorithms/fill_n/debug/2_neg.cc: New.
3030 * testsuite/25_algorithms/fill_n/debug/3_neg.cc: New.
3031 * testsuite/25_algorithms/fill_n/debug/4_neg.cc: New.
3033 * include/debug/debug.h (__glibcxx_requires_can_increment_range): New.
3034 (__glibcxx_requires_can_decrement_range): New.
3036 2018-06-12 François Dumont <fdumont@gcc.gnu.org>
3038 * include/debug/macros.h (__glibcxx_check_can_increment_range): New.
3039 (__glibcxx_check_can_decrement_range): New.
3040 * include/bits/stl_algobase.h (std::copy(_II, _II, _OI)): Use
3041 __glibcxx_requires_can_increment_range.
3042 (std::move(_II, _II, _OI)): Likewise.
3043 (std::copy_backward(_BI, _BI, _BI2)): Use
3044 __glibcxx_requires_can_decrement_range.
3045 (std::move_backward(_BI, _BI, _BI2)): Likewise.
3046 * testsuite/25_algorithms/copy_backward/debug/1_neg.cc: New.
3047 * testsuite/25_algorithms/copy_backward/debug/2_neg.cc: New.
3048 * testsuite/25_algorithms/copy_backward/debug/3_neg.cc: New.
3049 * testsuite/25_algorithms/equal/debug/1_neg.cc: New.
3050 * testsuite/25_algorithms/equal/debug/2_neg.cc: New.
3051 * testsuite/25_algorithms/equal/debug/3_neg.cc: New.
3053 2018-06-12 Jonathan Wakely <jwakely@redhat.com>
3055 P0935R0 Eradicating unnecessarily explicit default constructors
3056 * include/bits/random.h (linear_congruential_engine)
3057 (mersenne_twister_engine, subtract_with_carry_engine, random_device)
3058 (uniform_real_distribution, normal_distribution)
3059 (lognormal_distribution, gamma_distribution, chi_squared_distribution)
3060 (cauchy_distribution, fisher_f_distribution, student_t_distribution)
3061 (bernoulli_distribution, binomial_distribution,geometric_distribution)
3062 (negative_binomial_distribution, exponential_distribution)
3063 (weibull_distribution, extreme_value_distribution): Add non-explicit
3064 default constructors. Remove default argument for first parameter of
3065 explicit constructors.
3066 (piecewise_constant_distribution, piecewise_linear_distribution):
3067 Make default constructor non-explicit.
3068 * include/bits/uniform_int_dist.h (uniform_int_distribution): Add
3069 non-explicit default constructors. Remove default argument for first
3070 parameter of explicit constructor.
3071 * include/ext/random
3072 (simd_fast_mersenne_twister_engine, beta_distribution)
3073 (rice_distribution, nakagami_distribution, pareto_distribution)
3074 (k_distribution, arcsine_distribution, hoyt_distribution)
3075 (triangular_distribution, von_mises_distribution)
3076 (hypergeometric_distribution, logistic_distribution)
3077 (uniform_inside_sphere_distribution): Likewise.
3078 (uniform_on_sphere_distribution): Make default constructor
3080 * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
3081 Test for non-explicit default constructor. Fix references to standard.
3082 * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
3084 * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
3086 * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
3088 * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
3090 * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
3092 * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
3094 * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
3096 * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
3098 * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
3100 * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
3102 * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
3104 * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
3106 * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
3108 * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
3110 * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
3112 * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
3114 * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
3116 * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
3118 * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
3120 * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
3121 * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
3122 * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
3123 * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
3125 * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
3126 * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
3127 * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
3128 * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
3130 * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
3131 * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
3132 * testsuite/ext/random/triangular_distribution/cons/default.cc:
3134 * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
3136 * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
3138 * testsuite/ext/random/von_mises_distribution/cons/default.cc:
3140 * testsuite/util/testsuite_common_types.h
3141 (implicitly_default_constructible): New helper.
3143 2018-06-08 Jonathan Wakely <jwakely@redhat.com>
3145 * include/bits/ios_base.h (ios::Init::Init(const Init&))
3146 (ios::Init::operator=): Define as defaulted.
3147 * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)):
3149 * include/bits/stream_iterator.h (istream_iterator::operator=)
3150 (ostream_iterator::operator=): Likewise.
3151 * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
3153 * include/std/bitset (bitset::reference::reference(const reference&)):
3155 * include/std/complex (complex<float>::complex(const complex&))
3156 (complex<double>::complex(const complex&))
3157 (complex<long double>::complex(const complex&)): Likewise.
3159 2018-06-07 Jonathan Wakely <jwakely@redhat.com>
3161 * include/bits/regex.h (sub_match): Add noexcept to default
3162 constructor and length observer.
3163 (match_results): Add noexcept to default constructor and observers
3164 with no preconditions. Define destructor as defaulted.
3165 (operator==, operator!=, swap): Add noexcept.
3166 (regex_iterator): Add default member initializers and define default
3167 constructor and destructor as defaulted. Add noexcept to equality
3168 and dereference operators.
3170 2018-06-07 François Dumont <fdumont@gcc.gnu.org>
3172 * src/c++11/debug.cc
3173 (_Safe_iterator_base::_M_detach()): Reset state only if needed.
3174 (_Safe_iterator_base::_M_detach_single()): Likewise.
3175 (_Safe_local_iterator_base::_M_detach()): Reset state only if needed.
3176 (_Safe_local_iterator_base::_M_detach_single()): Likewise.
3178 2018-06-06 Jonathan Wakely <jwakely@redhat.com>
3180 * include/bits/shared_ptr_base.h (__shared_count): Remove redundant
3181 move of const value.
3183 2018-06-06 Jakub Jelinek <jakub@redhat.com>
3186 * include/bits/c++config: Check __cpp_transactional_memory >= 201500L
3187 rather than __cpp_transactional_memory >= 201505L.
3189 2018-06-06 Jonathan Wakely <jwakely@redhat.com>
3192 * include/bits/quoted_string.h (_Quoted_string<basic_string_view, C>):
3193 Define new partial specialization.
3194 * include/std/iomanip (quoted(basic_string_view<C,T>, C, C)): Define
3196 (operator<<(basic_ostream<C,T>&, const _Quoted_string<S,C>&)): Use
3197 value not reference for iteration.
3198 * testsuite/27_io/manipulators/standard/char/quoted.cc: Adjust
3200 * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
3201 * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
3204 2018-06-05 Jonathan Wakely <jwakely@redhat.com>
3206 * include/std/type_traits: Fix comment typos.
3208 * testsuite/27_io/filesystem/operations/read_symlink.cc: XFAIL for
3210 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
3211 * testsuite/experimental/filesystem/operations/read_symlink.cc:
3214 2018-06-05 François Dumont <fdumont@gcc.gnu.org>
3216 * include/bits/stl_tempbuf.h
3217 (_Temporary_buffer(_FwdIte, _FwdIte)): Delete, replaced by...
3218 (_Temporary_buffer(_FwdIte, size_type)): ...this, new.
3219 * include/ext/memory (temporary_buffer<>(_FwdIte, _FwdIte)): Adapt.
3220 * include/bits/stl_algo.h (__stable_partition): Adapt.
3221 (__inplace_merge): Adapt.
3222 (__stable_sort): Adapt.
3224 2018-06-04 Jonathan Wakely <jwakely@redhat.com>
3227 * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
3228 unconditionally. Remove redundant declaration.
3229 [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
3230 alignment-specifier.
3232 * include/bits/postypes.h (fpos): Define special members as defaulted.
3235 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
3236 the static variable correctly.
3238 2018-05-24 Jonathan Wakely <jwakely@redhat.com>
3240 PR libstdc++/78870 support std::filesystem on Windows
3241 * config.h.in: Regenerate.
3242 * configure: Regenerate.
3243 * configure.ac: Check for link, readlink and symlink.
3244 * include/bits/fs_path.h (path::operator/=(const path&)): Move
3245 definition out of class body.
3246 (path::is_absolute(), path::_M_append(path)): Likewise.
3247 (operator<<(basic_ostream, const path&)): Use std::quoted directly.
3248 (operator>>(basic_istream, path&)): Likewise.
3249 (u8path): Reorder definitions and fix Windows implementation.
3250 (path::is_absolute()): Define inline and fix for Windows.
3251 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
3252 Define POSIX version inline.
3253 (path::_M_append(path)): Define inline.
3254 * include/experimental/bits/fs_path.h (path::is_absolute()): Move
3255 definition out of class body.
3256 (operator<<(basic_ostream, const path&)): Fix type of delimiter and
3258 (operator>>(basic_istream, path&)): Likewise.
3259 (path::is_absolute()): Define inline and fix for Windows.
3260 * src/filesystem/dir-common.h (__gnu_posix): New namespace.
3261 (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
3262 (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
3263 Define as adaptors for Windows functions/types or as
3264 using-declarations for POSIX functions/types.
3265 (_Dir_base, get_file_type): Qualify names to use declarations from
3266 __gnu_posix namespace.
3267 (_Dir_base::is_dor_or_dotdot): New helper functions.
3268 * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
3269 names to use declarations from __gnu_posix namespace.
3270 * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
3271 (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
3272 (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
3273 (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
3274 (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
3275 (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
3276 Define as adaptors for Windows functions/types or as
3277 using-declarations for POSIX functions/types.
3278 (stat_type, do_copy_file): Qualify names to use declarations from
3279 __gnu_posix namespace.
3280 (do_space): Declare new function.
3281 (make_file_type): Only use S_ISLNK if defined.
3282 * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
3283 path::value_type not char.
3284 (filesystem::copy, create_dir, filesystem::create_directory): Qualify
3285 names to use declarations from __gnu_posix namespace.
3286 (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
3287 add implementation for Windows.
3288 (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
3289 (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
3290 [!_PC_PATH_MAX]: Don't use pathconf.
3291 [PATH_MAX]: Use if defined.
3292 (filesystem::current_path(const path&, error_code&))
3293 (filesystem::equivalent, do_stat, filesystem::hard_link_count)
3294 (filesystem::last_write_time, filesystem::permissions): Use names
3296 (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
3297 (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
3298 implementation for Windows.
3299 (filesystem::rename, filesystem::resize_file): Use names from
3301 (filesystem::space): Use do_space.
3302 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
3303 (filesystem::status, filesystem::symlink_status): Use names from
3305 (filesystem::temp_directory_path): Add implementation for Windows.
3306 * src/filesystem/path.cc (dot): Define constant.
3307 (path::replace_extension): Use dot.
3308 (path::_M_find_extension): Likewise. Use path::string_type not
3310 (path::_M_split_cmpts): Use dot.
3311 (filesystem_error::_M_get_what): Use u8string() not native().
3312 * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
3313 Qualify names to use declarations from __gnu_posix namespace.
3314 * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
3316 (filesystem::absolute(const path&, error_code&)): Add implementation
3318 (char_ptr, filesystem::canonical): Use path::value_type not char.
3319 (do_copy_file): Use names from __gnu_posix.
3320 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
3322 (filesystem::copy, create_dir, filesystem::create_directory): Qualify
3323 names to use declarations from __gnu_posix namespace.
3324 (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
3325 add implementation for Windows.
3326 (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
3327 (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
3328 [!_PC_PATH_MAX]: Don't use pathconf.
3329 [PATH_MAX]: Use if defined.
3330 (filesystem::current_path(const path&, error_code&))
3331 (filesystem::equivalent, do_stat, filesystem::hard_link_count)
3332 (filesystem::last_write_time, filesystem::permissions): Use names
3334 (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
3335 (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
3336 implementation for Windows.
3337 (filesystem::rename, filesystem::resize_file): Use names from
3340 (filesystem::space): Use do_space.
3341 (filesystem::status, filesystem::symlink_status): Use names from
3343 (filesystem::temp_directory_path): Add implementation for Windows.
3344 * src/filesystem/std-path.cc
3345 [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
3347 (dot): Define constant.
3348 (path::replace_extension, is_dot): Use dot.
3349 (path::lexically_normal): Check _M_type instead of calling
3350 non-existent function.
3351 (path::_M_find_extension): Use dot. Use path::string_type not
3353 (path::_M_split_cmpts): Use dot.
3354 (filesystem_error::_M_get_what): Use u8string() not native().
3355 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
3357 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
3359 * testsuite/27_io/filesystem/operations/absolute.cc: Use
3360 __gnu_test::root_path() instead of "/" and add Windows-specific tests.
3361 * testsuite/27_io/filesystem/operations/canonical.cc: Use
3362 path::string() to get narrow string, not path::native().
3363 * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
3364 with std::filesystem::path not std::basic_string.
3365 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
3366 * testsuite/27_io/filesystem/operations/exists.cc: Use
3367 __gnu_test::root_path() instead of "/".
3368 * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
3369 fstreams with std::filesystem::path not std::basic_string.
3370 * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
3371 path::string() to get narrow string.
3372 * testsuite/27_io/filesystem/operations/space.cc: Check results for
3373 errors, expect sensible values otherwise.
3374 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
3375 helpers for adjusting the environment on Windows.
3376 * testsuite/27_io/filesystem/path/append/path.cc: Test
3377 Windows-specific behaviour.
3378 * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
3379 of path::string_type objects.
3380 * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
3381 string to wide string on Windows.
3382 * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
3383 for backslash as root-directory.
3384 * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
3385 path::string() to get narrow string.
3386 * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
3388 * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
3390 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
3391 different definintion of absolute paths on Windows.
3392 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
3393 Do not use symlinks.
3394 * testsuite/experimental/filesystem/operations/absolute.cc: Test
3396 * testsuite/experimental/filesystem/operations/copy.cc: Construct
3397 fstreams with NTCTS not std::basic_string.
3398 * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
3399 * testsuite/experimental/filesystem/operations/exists.cc: Use
3400 __gnu_test::root_path() instead of "/".
3401 * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
3402 fstreams with NTCTS not std::basic_string.
3403 * testsuite/experimental/filesystem/operations/last_write_time.cc:
3404 Use path::string() to get narrow string.
3405 * testsuite/experimental/filesystem/operations/space.cc: Use
3406 __gnu_test::root_path() instead of "/".
3407 * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
3408 Add helpers for adjusting the environment on Windows.
3409 * testsuite/experimental/filesystem/path/append/path.cc: Use
3410 path::string() to get narrow strings for comparisons.
3411 * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
3412 * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
3414 * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
3415 * testsuite/experimental/filesystem/path/native/string.cc: Use
3416 string_type not std::string.
3417 * testsuite/experimental/filesystem/path/query/is_absolute.cc:
3418 Adjust for different definintion of absolute paths on Windows.
3419 * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
3421 (__gnu_test::scoped_file): Construct fstreams with NTCTS not
3424 2018-05-31 Jonathan Wakely <jwakely@redhat.com>
3427 * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
3428 uint_least16_t and uint_least32_t.
3429 (__make_unsigned<wchar_t>): Define unconditionally.
3430 (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
3432 (__make_unsigned_selector_base): New type to provide helper templates.
3433 (__make_unsigned_selector<_Tp, false, true>): Reimplement using
3434 __make_unsigned_selector_base helpers.
3435 (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
3436 (__make_signed_selector<_Tp, true, false>): Remove intermediate
3438 (__make_signed<wchar_t>, __make_signed<char16_t>)
3439 (__make_signed<char32_t>)): Define unconditionally.
3440 * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
3441 wchar_t, char16_t and char32_t are transformed correctly.
3442 * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
3444 * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
3445 wchar_t, char16_t and char32_t are transformed correctly.
3446 * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
3449 2018-05-29 Jonathan Wakely <jwakely@redhat.com>
3451 * include/std/variant (__erased_dtor): Qualify call to __get.
3453 2018-05-27 François Dumont <fdumont@gcc.gnu.org>
3455 * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
3456 (_Rb_tree(const allocator_type&)): Use latter.
3457 * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
3458 (map(initializer_list<value_type>, const allocator_type&)): Likewise.
3459 (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
3460 * include/bits/stl_multimap.h
3461 (multimap(const allocator_type&)): Likewise.
3462 (multimap(initializer_list<value_type>, const allocator_type&)):
3464 (multimap(_InputIterator, _InputIterator, const allocator_type&)):
3466 * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
3467 (set(initializer_list<value_type>, const allocator_type&)): Likewise.
3468 (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
3469 * include/bits/stl_multiset.h
3470 (multiset(const allocator_type&)): Likewise.
3471 (multiset(initializer_list<value_type>, const allocator_type&)):
3473 (multiset(_InputIterator, _InputIterator, const allocator_type&)):
3476 2018-05-25 François Dumont <fdumont@gcc.gnu.org>
3479 * src/c++11/debug.cc: Remove backtrace usage.
3481 2018-05-24 Maya Rashish <coypu@sdf.org>
3484 * crossconfig.m4: Test for aligned_alloc on netbsd.
3485 * configure: Regenerate.
3487 2018-05-24 Jonathan Wakely <jwakely@redhat.com>
3491 * include/bits/atomic_base.h (__atomic_base::value_type)
3492 (__atomic_base::difference_type): Add new typedefs.
3493 * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
3494 (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
3495 (atomic<T*>::operator++, atomic<T*>::operator--)
3496 (atomic<T*>::operator+=, atomic<T*>::operator-=)
3497 (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
3498 to enforce C++17 requirement on pointer arithmetic.
3499 (__atomic_val_t, __atomic_diff_t): New alias templates.
3500 (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
3501 (atomic_compare_exchange_weak_explicit)
3502 (atomic_compare_exchange_strong_explicit, atomic_store)
3503 (atomic_exchange, atomic_compare_exchange_weak)
3504 (atomic_compare_exchange_strong): Use __atomic_val_t to make
3505 scalar parameters be non-deduced contexts.
3506 (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
3507 (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
3508 atomic instead of __atomic_base, and use __atomic_diff_t for scalar
3510 (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
3511 (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
3512 (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
3513 (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
3514 (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
3516 * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
3517 * testsuite/29_atomics/atomic/69769.cc: New test.
3518 * testsuite/29_atomics/atomic/nonmembers.cc: New test.
3519 * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
3520 Disable test for C++17 and later.
3521 * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
3522 * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
3523 * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
3526 2018-05-23 Jonathan Wakely <jwakely@redhat.com>
3528 * include/bits/fs_path.h (path::__is_encoded_char): Change from class
3529 template to alias template.
3530 (path::__value_type_is_char): Use remove_const_t.
3531 (path:_S_string_from_iter): New helper function.
3532 (path::_S_convert(InputIter, __null_terminated))
3533 (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
3534 Use _S_string_from_iter.
3535 (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
3536 rep for COW strings.
3537 * include/experimental/bits/fs_path.h (path::__is_encoded_char):
3538 Change from class template to alias template.
3539 (path::__value_type_is_char): Use remove_const.
3540 (path:_S_string_from_iter): New helper function.
3541 (path::_S_convert(InputIter, __null_terminated))
3542 (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
3543 Use _S_string_from_iter.
3544 * testsuite/27_io/filesystem/path/append/source.cc: Test appending
3546 * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
3547 string equality, not path equivalence.
3548 * testsuite/27_io/filesystem/path/construct/format.cc: Check
3549 construction from std::string and std::wstring and input iterators.
3550 * testsuite/27_io/filesystem/path/construct/locale.cc: Check
3551 construction from iterators.
3552 * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
3553 exact string equality, not path equivalence.
3554 * testsuite/experimental/filesystem/path/construct/locale.cc: Check
3555 construction from iterators.
3557 * include/bits/fs_path.h (path::_M_type): Change default member
3558 initializer to _Filename.
3559 (path::begin): Create past-the-end iterator for empty path.
3560 * src/filesystem/std-path.cc (path::remove_filename()): Remove
3562 (path::has_relative_path()): Return false for empty filenames.
3563 (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
3564 Fix offset of empty final component.
3565 * testsuite/27_io/filesystem/path/itr/components.cc: New.
3566 * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
3568 2018-05-21 Jonathan Wakely <jwakely@redhat.com>
3570 Add support for opening file streams from wide character strings.
3571 * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
3572 (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
3573 Define new overload.
3574 * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
3575 (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
3576 Declare new overload.
3577 * configure.ac: Check for _wfopen.
3578 * crossconfig.m4: Likewise.
3579 * configure: Regenerate.
3580 * config.h.in: Regenerate.
3581 * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
3582 (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
3583 Define new overload.
3584 * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
3585 (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
3586 Declare new overload.
3587 [_GLIBCXX_HAVE__WFOPEN]
3588 (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
3589 (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
3590 (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
3591 (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
3592 (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
3593 (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
3595 * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
3596 * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
3597 * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
3598 * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
3599 * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
3600 * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
3601 * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
3603 2018-05-21 François Dumont <fdumont@gcc.gnu.org>
3606 * include/bits/stl_tree.h
3607 (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
3610 2018-05-21 Jonathan Wakely <jwakely@redhat.com>
3612 * src/filesystem/std-ops.cc (absolute): Report an error for empty
3614 (weakly_canonical(const path&)): Do not call canonical on empty path.
3615 (weakly_canonical(const path&, error_code&)): Likewise.
3616 * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
3619 * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
3620 dg-require-filesystem-ts.
3623 * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
3624 initialize base class to avoid warnings.
3626 2018-05-19 Jonathan Wakely <jwakely@redhat.com>
3628 * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
3629 [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
3630 little_endian element in bitmask.
3631 * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
3632 * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
3634 2018-05-18 François Dumont <fdumont@gcc.gnu.org>
3636 * include/bits/stl_tree.h
3637 (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
3638 (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
3639 (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
3640 (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
3641 * include/debug/map.h
3642 (map(map&&, const_allocator_type&)): Add noexcept qualitication.
3643 * include/debug/multimap.h
3644 (multimap(multimap&&, const_allocator_type&)): Likewise.
3645 * include/debug/set.h
3646 (set(set&&, const_allocator_type&)): Likewise.
3647 * include/debug/multiset.h
3648 (multiset(multiset&&, const_allocator_type&)): Likewise.
3649 * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
3651 * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
3653 * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
3655 * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
3657 * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
3659 * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
3661 * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
3663 * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
3666 2018-05-18 Jason Merrill <jason@redhat.com>
3668 * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
3669 for conversion to const_iterator. Add defaulted copy ops.
3670 * libsupc++/new (bad_alloc): Add defaulted copy ops.
3671 * libsupc++/exception.h (exception): Add defaulted copy ops.
3672 * include/std/system_error (system_error): Add defaulted copy ops.
3673 * include/std/stdexcept (domain_error, invalid_argument)
3674 (length_error, out_of_range, range_error, overflow_error)
3675 (underflow_error): Add defaulted copy ops.
3676 * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
3678 * include/bits/allocator.h (allocator): Add defaulted copy assignment.
3679 * include/ext/throw_allocator.h (condition_base): Add defaulted
3680 default and copy ctor and copy assignment.
3682 2018-05-18 Jonathan Wakely <jwakely@redhat.com>
3685 * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
3686 (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
3687 (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
3688 (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
3690 * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
3692 * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
3693 braces around body of do-while.
3694 * testsuite/28_regex/basic_regex/85098.cc: New
3696 2018-05-17 Jonathan Wakely <jwakely@redhat.com>
3699 * src/filesystem/path.cc (path::preferred_separator): Add used
3701 * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
3704 * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
3705 * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
3706 Refactor to separate non-throwing and throwing implementations.
3707 [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
3708 if constructing the object throws.
3710 2018-05-15 Jonathan Wakely <jwakely@redhat.com>
3713 * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
3714 (linear_congruential_engine, mersenne_twister_engine)
3715 (subtract_with_carry_engine, discard_block_engine)
3716 (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
3717 constrain function templates taking seed sequences.
3718 * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
3719 (mersenne_twister_engine::seed(_Sseq&))
3720 (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
3722 * include/ext/random (simd_fast_mersenne_twister_engine): Use
3723 __is_seed_seq to constrain function templates taking seed sequences.
3724 * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
3725 Change return type to match declaration.
3726 * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
3728 * testsuite/26_numerics/random/independent_bits_engine/cons/
3730 * testsuite/26_numerics/random/linear_congruential_engine/cons/
3732 * testsuite/26_numerics/random/mersenne_twister_engine/cons/
3734 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
3735 * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
3737 * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
3739 * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
3743 * include/bits/fs_path.h (path::is_absolute()): Use same definition
3744 for all operating systems.
3745 * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
3746 * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
3747 * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
3748 * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
3750 * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
3751 unused <vector> header.
3752 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
3753 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
3754 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
3755 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
3756 * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
3758 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
3760 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
3761 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
3762 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
3763 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
3764 * testsuite/experimental/filesystem/path/decompose/extension.cc:
3766 * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
3767 * testsuite/experimental/filesystem/path/query/has_extension.cc:
3769 * testsuite/experimental/filesystem/path/query/has_filename.cc:
3771 * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
3773 * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
3775 * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
3777 * testsuite/experimental/filesystem/path/query/has_root_name.cc:
3779 * testsuite/experimental/filesystem/path/query/has_root_path.cc:
3781 * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
3782 * testsuite/experimental/filesystem/path/query/is_relative.cc:
3786 * include/bits/fs_path.h (path::operator/=, path::append): Construct
3787 temporary path before calling _M_append.
3788 (path::_M_append): Change parameter to path and implement C++17
3790 * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
3791 and more examples from the standard.
3792 * testsuite/27_io/filesystem/path/append/source.cc: New.
3793 * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
3794 * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
3796 * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
3797 __invoke to prevent ADL.
3799 2018-05-14 Jonathan Wakely <jwakely@redhat.com>
3802 * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
3803 exceptions from _M_terminate_output().
3804 * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
3805 exceptions from close().
3806 * testsuite/27_io/basic_filebuf/close/81256.cc: New.
3808 * include/bits/valarray_array.h (__valarray_get_memory): Remove.
3809 (__valarray_get_storage): Call operator new directly. Remove ignored
3810 top-level restrict qualifier and add malloc attribute instead.
3811 (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
3814 * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
3815 (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
3818 * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
3820 * testsuite/23_containers/set/modifiers/node_swap.cc: New.
3822 2018-05-13 Ville Voutilainen <ville.voutilainen@gmail.com>
3825 * testsuite/20_util/variant/80165.cc: New.
3827 2018-05-10 Jonathan Wakely <jwakely@redhat.com>
3829 * doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
3830 * doc/xml/manual/debug_mode.xml: Add array and forward_list to list
3831 of C++11 containers with Debug Mode support.
3832 * doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
3833 * doc/html/*: Regenerate.
3835 2018-05-10 Jason Merrill <jason@redhat.com>
3837 * include/bits/regex_compiler.h (_S_cache_size): Change from
3838 function to variable.
3840 2018-05-10 Edward Smith-Rowland <3dw4rd@verizon.net>
3842 PR libstdc++/83140 - assoc_legendre returns negated value when m is odd
3843 * include/tr1/legendre_function.tcc (__assoc_legendre_p): Add __phase
3844 argument defaulted to +1. Doxy comments on same.
3845 * testsuite/special_functions/02_assoc_legendre/
3846 check_value.cc: Regen.
3847 * testsuite/tr1/5_numerical_facilities/special_functions/
3848 02_assoc_legendre/check_value.cc: Regen.
3850 2018-05-10 Jonathan Wakely <jwakely@redhat.com>
3853 * include/bits/c++config.h (__replacement_assert): Add linkage
3855 * include/bits/std_abs.h: Add comment to closing brace of block.
3856 * include/c_global/cstddef: Add linkage specification.
3857 * include/c_global/cstring: Likewise.
3858 * include/c_global/cwchar: Likewise.
3860 2018-05-09 François Dumont <fdumont@gcc.gnu.org>
3862 * include/debug/safe_iterator.h (_Safe_iterator<>::_M_constant()):
3864 (_Safe_iterator<>::_S_constant()): ...that.
3865 * include/debug/safe_local_iterator.h
3866 (_Safe_local_iterator<>::_M_constant()): Rename in...
3867 (_Safe_local_iterator<>::_S_constant()): ...that.
3868 * include/debug/formatter.h: Remove bits/cpp_type_traits.h include.
3869 (_Iterator_state::__rbegin): New.
3870 (_Iterator_state::__rmiddle): New.
3871 (_Iterator_state::__rend): New.
3872 (_Parameter::_Parameter(const _Safe_iterator<>&, const char*,
3873 _Is_iterator)): Use _Safe_iterator<>::_S_constant. Grab normal underlying
3875 (_Parameter::_Parameter(const _Safe_local_iterator<>&, const char*,
3876 _Is_iterator)): Likewise.
3877 (_Parameter::_S_reverse_state(_Iterator_state)): New.
3878 (_Parameter(__gnu_cxx::__normal_iterator<> const&, const char*,
3879 _Is_iterator)): New.
3880 (_Parameter(std::reverse_iterator<> const&, const char*,
3881 _Is_iterator)): New.
3882 (_Parameter(std::reverse_iterator<_Safe_iterator<>> const&,
3883 const char*, _Is_iterator)): New.
3884 (_Parameter(std::move_iterator<> const&, const char*, _Is_iterator):
3886 (_Parameter(std::move_iterator<_Safe_iterator<>> const&, const char*,
3887 _Is_iterator)): New.
3888 * testsuite/24_iterators/move_iterator/debug_neg.cc: New.
3889 * testsuite/24_iterators/normal_iterator/debug_neg.cc: New.
3890 * testsuite/24_iterators/reverse_iterator/debug_neg.cc: New.
3892 2018-05-09 Jonathan Wakely <jwakely@redhat.com>
3894 * include/bits/std_function.h (_Base_manager::_M_get_pointer):
3895 Use constexpr if in C++17 mode.
3896 (_Base_manager::_M_clone(_Any_data&, const _Any_data&, true_type)):
3897 Copy from const object.
3898 * testsuite/20_util/function/cons/non_copyconstructible.cc: New.
3900 2018-05-08 François Dumont <fdumont@gcc.gnu.org>
3902 * src/c++11/debug.cc [_GLIBCXX_HAVE_EXECINFO_H]: Include execinfo.h.
3903 [_GLIBCXX_HAVE_EXECINFO_H](_Error_formatter::_M_error): Render
3906 * include/debug/macros.h (__glibcxx_check_valid_range_at): New.
3907 * include/debug/functions.h (__check_valid_range): Use latter.
3908 * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
3910 * include/debug/deque
3911 (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
3912 * include/debug/forward_list
3913 (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
3915 * include/debug/list
3916 (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3917 * include/debug/list
3918 (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3919 * include/debug/map.h
3920 (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3921 (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
3923 * include/debug/multimap.h
3924 (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3925 (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
3926 const _Alloc&)): Likewise.
3927 * include/debug/set.h
3928 (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3929 (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
3931 * include/debug/multiset.h
3932 (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
3933 (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
3934 const _Alloc&)): Likewise.
3935 * include/debug/string
3936 (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
3938 * include/debug/unordered_map
3939 (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
3941 (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
3942 const _Alloc&)): Likewise.
3943 * include/debug/unordered_set
3944 (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
3946 (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
3947 const _Alloc&)): Likewise.
3948 * include/debug/vector
3949 (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
3951 * include/debug/formatter.h (_Error_formatter::_M_function): New.
3952 (_Error_formatter(const char*, unsigned int)): Adapt.
3953 (_Error_formatter::_M_at): Rename in...
3954 (_Error_formatter::_S_at): ...that and adapt.
3955 * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): New.
3956 (_GLIBCXX_DEBUG_VERIFY_AT, _GLIBCXX_DEBUG_VERIFY): Adapt.
3957 * src/c++11/debug.cc (_Error_formatter::_M_error): Render _M_function
3960 2018-05-08 Jonathan Wakely <jwakely@redhat.com>
3962 * include/bits/regex_automaton.h (_NFA_base::_M_paren_stack, _NFA):
3963 Use normal std::vector even in Debug Mode.
3966 * include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
3967 to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
3968 * include/Makefile.in: Regenerate.
3969 * include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
3970 within conditional block.
3972 2018-05-07 Jonathan Wakely <jwakely@redhat.com>
3974 * doc/xml/manual/using.xml (table.cmd_options): Document that the
3975 C++17 Filesystem implementation also needs -lstdc++fs.
3978 * include/bits/fs_path.h (operator/): Permit copy elision.
3979 * include/experimental/bits/fs_path.h (operator/): Likewise.
3981 2018-05-07 Edward Smith-Rowland <3dw4rd@verizon.net>
3983 Moar PR libstdc++/80506
3984 * include/bits/random.tcc (gamma_distribution::__generate_impl()):
3985 Fix magic number used in loop condition.
3987 2018-05-04 Jonathan Wakely <jwakely@redhat.com>
3989 PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>>
3990 * include/std/optional (_Optional_payload): Add noexcept to default
3991 constructor. Re-indent.
3992 (_Optional_payload<_Tp, true, true, true>): Likewise. Add noexcept to
3993 constructor for copying disengaged payloads.
3994 (_Optional_payload<_Tp, true, false, true>): Likewise.
3995 (_Optional_payload<_Tp, true, true, false>): Likewise.
3996 (_Optional_payload<_Tp, true, false, false>): Likewise.
3997 * testsuite/20_util/optional/cons/85642.cc: New.
3998 * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error lines.
4000 2018-05-03 Jonathan Wakely <jwakely@redhat.com>
4003 * include/tr1/cmath [__STRICT_ANSI__] (hypergf, hypergl, hyperg): Use
4004 inline definitions instead of using-declarations.
4005 [__STRICT_ANSI__] (conf_hypergf, conf_hypergl, conf_hyperg): Likewise.
4006 * testsuite/tr1/5_numerical_facilities/special_functions/
4007 07_conf_hyperg/compile_cxx17.cc: New.
4008 * testsuite/tr1/5_numerical_facilities/special_functions/
4009 17_hyperg/compile_cxx17.cc: New.
4012 * include/std/variant (visit): Qualify std::get call.
4014 PR libstdc++/85632 use uintmax_t for arithmetic
4015 * src/filesystem/ops.cc (experimental::filesystem::space): Perform
4016 arithmetic in result type.
4017 * src/filesystem/std-ops.cc (filesystem::space): Likewise.
4018 * testsuite/27_io/filesystem/operations/space.cc: Check total capacity
4019 is greater than free space.
4020 * testsuite/experimental/filesystem/operations/space.cc: New.
4022 * testsuite/20_util/remove_cvref/requirements/alias_decl.cc: New.
4023 * testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc:
4025 * testsuite/20_util/remove_cvref/value.cc: New.
4026 * testsuite/20_util/remove_cvref/value_ext.cc: New.
4028 PR libstdc++/84087 LWG DR 2268 basic_string default arguments
4029 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
4030 (append(const basic_string&, size_type, size_type)
4031 (assign(const basic_string&, size_type, size_type)
4032 (insert(size_type, const basic_string&, size_type, size_type)
4033 (replace(size_type,size_type,const basic_string&,size_type,size_type)
4034 (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
4035 Add default arguments (LWG 2268).
4036 [_GLIBCXX_USE_CXX11_ABI=0]
4037 (append(const basic_string&, size_type, size_type)
4038 (assign(const basic_string&, size_type, size_type)
4039 (insert(size_type, const basic_string&, size_type, size_type)
4040 (replace(size_type,size_type,const basic_string&,size_type,size_type)
4041 (compare(size_type,size_type,constbasic_string&,size_type,size_type)):
4043 * testsuite/21_strings/basic_string/dr2268.cc: New test.
4046 * include/std/thread (thread::__not_same): New SFINAE helper.
4047 (thread::thread(_Callable&&, _Args&&...)): Add SFINAE constraint that
4048 first argument is not a std::thread. Add static assertion to check
4049 INVOKE expression is valid.
4050 (thread::thread(thread&), thread::thread(const thread&&)): Remove.
4051 (thread::_Invoke::_M_invoke, thread::_Invoke::operator()): Use
4052 __invoke_result for return types and remove exception specifications.
4053 * testsuite/30_threads/thread/cons/84535.cc: New.
4055 * include/std/future (__async_result_of): Use __invoke_result instead
4058 * include/std/any (any_cast): Use __remove_cvref_t.
4059 * include/std/tuple (__make_tuple): Likewise.
4060 * include/std/type_traits (__remove_cvref_t): Define.
4061 (__result_of_memobj, __result_of_memfun): Use __remove_cvref_t.
4062 [__cplusplus > 201703L] (remove_cvref, remove_cvref_t): Define.
4063 * include/std/variant (__erased_hash): Use __remove_cvref_t.
4065 2018-05-02 François Dumont <fdumont@gcc.gnu.org>
4067 * include/bits/deque.tcc (deque<>::_M_assign_aux): Cast to void to
4068 ensure overloaded comma not used.
4069 * include/bits/list.tcc (list<>::_M_assign_dispatch): Likewise.
4070 * include/bits/vector.tcc (vector<>::_M_assign_aux): Likewise.
4071 * include/bits/stl_bvector.h (vector<bool>::_M_assign_aux): Likewise.
4072 * testsuite/23_containers/deque/modifiers/assign/1.cc: New.
4073 * testsuite/23_containers/list/modifiers/assign/1.cc: New.
4074 * testsuite/23_containers/vector/bool/modifiers/assign/1.cc: New.
4075 * testsuite/23_containers/vector/modifiers/assign/1.cc: New.
4077 2018-05-02 Jonathan Wakely <jwakely@redhat.com>
4080 * include/bits/ios_base.h (ios_base::iword, ios_base::pword): Cast
4081 indices to unsigned.
4082 * src/c++11/ios.cc (ios_base::_M_grow_words): Treat negative indices
4083 as failure. Refactor error handling.
4084 * testsuite/27_io/ios_base/storage/68197.cc: New.
4088 * include/bits/gslice_array.h (gslice_array): Define default
4089 constructor as deleted, as per C++11 standard.
4090 * include/bits/mask_array.h (mask_array): Likewise.
4091 * include/bits/slice_array.h (slice_array): Likewise.
4092 * include/bits/valarray_after.h (_GBase, _GClos, _IBase, _IClos): Move
4093 to namespace __detail.
4094 (_GBase::_M_expr, _IBase::_M_expr): Use _ValArrayRef for type of data
4096 * include/bits/valarray_before.h (_ValArrayRef): New helper for type
4097 of data members in closure objects.
4098 (_FunBase, _ValFunClos, _RefFunClos, _UnBase, _UnClos, _BinBase)
4099 (_BinBase2, _BinBase1, _BinClos, _SBase, _SClos): Move to namespace
4101 (_FunBase::_M_expr, _UnBase::_M_expr, _BinBase::_M_expr1)
4102 (_BinBase::_M_expr2, _BinBase2::_M_expr1, _BinBase1::_M_expr2)
4103 (_SBase::_M_expr): Use _ValArrayRef for type of data members.
4104 * include/std/valarray (_UnClos, _BinClos, _SClos, _GClos, _IClos)
4105 (_ValFunClos, _RefFunClos): Move to namespace __detail and add
4106 using-declarations to namespace std.
4107 * testsuite/26_numerics/valarray/83860.cc: New.
4109 * testsuite/backward/strstream_move.cc: Remove duplicate function
4113 * include/backward/strstream (strstreambuf): Define move constructor
4114 and move assignment operator.
4115 (istrstream, ostrstream, strstream): Likewise.
4116 * testsuite/backward/strstream_move.cc: New.
4118 2018-05-01 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
4121 * acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
4122 * config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
4123 * configure: Regenerate.
4124 * include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
4125 based on ENABLE_FLOAT128.
4126 * include/Makefile.in: Regenerate.
4127 * include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
4128 [!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
4129 _GLIBCXX_USE_FLOAT128.
4131 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
4133 * configure: Regenerated.
4135 2018-04-19 Jakub Jelinek <jakub@redhat.com>
4137 * configure: Regenerated.
4139 2018-04-18 Jonathan Wakely <jwakely@redhat.com>
4140 Jakub Jelinek <jakub@redhat.com>
4143 * src/c++11/Makefile.am: Don't generate debuginfo again for
4144 cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
4145 * src/c++11/Makefile.in: Regenerate.
4147 2018-04-18 Jonathan Wakely <jwakely@redhat.com>
4150 * testsuite/30_threads/thread/cons/terminate.cc
4151 [!_GLIBCXX_USE_C99_STDLIB] : Use _exit or std::exit instead of _Exit.
4153 2018-04-18 David Malcolm <dmalcolm@redhat.com>
4156 * configure: Regenerate.
4158 2018-04-16 Jonathan Wakely <jwakely@redhat.com>
4160 * testsuite/experimental/filesystem/file_status/1.cc: Add
4161 -DUSE_FILESYSTEM_TS to dg-options.
4162 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
4164 * testsuite/experimental/filesystem/iterators/pop.cc: Likewise.
4165 * testsuite/experimental/filesystem/iterators/
4166 recursive_directory_iterator.cc: Likewise.
4167 * testsuite/experimental/filesystem/operations/absolute.cc: Likewise.
4168 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
4169 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
4170 * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
4171 * testsuite/experimental/filesystem/operations/create_directories.cc:
4173 * testsuite/experimental/filesystem/operations/create_directory.cc:
4175 * testsuite/experimental/filesystem/operations/create_symlink.cc:
4177 * testsuite/experimental/filesystem/operations/current_path.cc:
4179 * testsuite/experimental/filesystem/operations/equivalent.cc: Likewise.
4180 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
4181 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
4182 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
4183 * testsuite/experimental/filesystem/operations/last_write_time.cc:
4185 * testsuite/experimental/filesystem/operations/permissions.cc:
4187 * testsuite/experimental/filesystem/operations/read_symlink.cc:
4189 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
4190 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
4191 * testsuite/experimental/filesystem/operations/status.cc: Likewise.
4192 * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
4194 * testsuite/experimental/filesystem/path/append/path.cc: Likewise.
4195 * testsuite/experimental/filesystem/path/assign/assign.cc: Likewise.
4196 * testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
4197 * testsuite/experimental/filesystem/path/compare/compare.cc: Likewise.
4198 * testsuite/experimental/filesystem/path/compare/path.cc: Likewise.
4199 * testsuite/experimental/filesystem/path/compare/strings.cc: Likewise.
4200 * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
4201 * testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
4202 * testsuite/experimental/filesystem/path/construct/copy.cc: Likewise.
4203 * testsuite/experimental/filesystem/path/construct/default.cc:
4205 * testsuite/experimental/filesystem/path/construct/locale.cc: Likewise.
4206 * testsuite/experimental/filesystem/path/construct/range.cc: Likewise.
4207 * testsuite/experimental/filesystem/path/construct/string_view.cc:
4209 * testsuite/experimental/filesystem/path/decompose/extension.cc:
4211 * testsuite/experimental/filesystem/path/decompose/filename.cc:
4213 * testsuite/experimental/filesystem/path/decompose/parent_path.cc:
4215 * testsuite/experimental/filesystem/path/decompose/relative_path.cc:
4217 * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
4219 * testsuite/experimental/filesystem/path/decompose/root_name.cc:
4221 * testsuite/experimental/filesystem/path/decompose/root_path.cc:
4223 * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
4224 * testsuite/experimental/filesystem/path/generic/generic_string.cc:
4226 * testsuite/experimental/filesystem/path/itr/traversal.cc: Likewise.
4227 * testsuite/experimental/filesystem/path/modifiers/clear.cc: Likewise.
4228 * testsuite/experimental/filesystem/path/modifiers/make_preferred.cc:
4230 * testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
4232 * testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
4234 * testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
4236 * testsuite/experimental/filesystem/path/modifiers/swap.cc: Likewise.
4237 * testsuite/experimental/filesystem/path/native/string.cc: Likewise.
4238 * testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
4240 * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
4241 * testsuite/experimental/filesystem/path/query/has_extension.cc:
4243 * testsuite/experimental/filesystem/path/query/has_filename.cc:
4245 * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
4247 * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
4249 * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
4251 * testsuite/experimental/filesystem/path/query/has_root_name.cc:
4253 * testsuite/experimental/filesystem/path/query/has_root_path.cc:
4255 * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
4256 * testsuite/experimental/filesystem/path/query/is_relative.cc:
4259 2018-04-13 Jonathan Wakely <jwakely@redhat.com>
4261 * src/c++11/Makefile.am: Fix sed command.
4262 * src/c++11/Makefile.in: Regenerate.
4264 * src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
4265 handle mangled names starting with double underscores on darwin.
4266 * src/c++11/Makefile.in: Regenerate.
4268 2018-04-12 Jonathan Wakely <jwakely@redhat.com>
4270 * src/c++11/Makefile.am: Fix comment.
4271 * src/c++11/Makefile.in: Regenerate.
4272 * src/c++11/cxx11-ios_failure.cc: Fix comment.
4273 * src/c++98/ios_failure.cc: Likewise.
4275 * src/c++11/ios.cc: Remove redundant macro definition.
4277 2018-04-11 Jonathan Wakely <jwakely@redhat.com>
4279 * doc/xml/manual/abi.xml: Document header locations in recent
4281 * doc/xml/manual/evolution.xml: Add API changes since GCC 5.
4282 * doc/xml/manual/spine.xml: Update copyright years.
4283 * doc/xml/manual/strings.xml: Adjust tolower example to avoid
4284 undefined behaviour.
4285 * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
4286 * doc/html/*: Regenerate.
4288 2018-04-10 Jonathan Wakely <jwakely@redhat.com>
4290 * doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
4291 * doc/xml/manual/backwards_compatibility.xml: Likewise.
4292 * doc/xml/manual/containers.xml: Likewise.
4293 * doc/xml/manual/debug_mode.xml: Likewise.
4294 * doc/xml/manual/extensions.xml: Likewise.
4295 * doc/xml/manual/policy_data_structures_biblio.xml: Likewise.
4296 * doc/xml/manual/using.xml: Likewise.
4297 * doc/xml/manual/utilities.xml: Likewise.
4300 * src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
4301 cxx11-ios_failure.cc to rewrite type info for __ios_failure.
4302 * src/c++11/Makefile.in: Regenerate.
4303 * src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
4305 [_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
4306 * src/c++11/ios.cc (__throw_ios_failure): Remove definition.
4307 * src/c++98/ios_failure.cc (__construct_ios_failure)
4308 (__destroy_ios_failure, is_ios_failure_handler): New functions.
4309 [!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
4310 * testsuite/27_io/ios_base/failure/dual_abi.cc: New.
4311 * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
4312 handler types, to always catch std::ios_base::failure.
4313 * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
4314 * testsuite/27_io/basic_istream/extractors_arithmetic/char/
4315 exceptions_failbit.cc: Likewise.
4316 * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
4317 exceptions_failbit.cc: Likewise.
4318 * testsuite/27_io/basic_istream/extractors_other/char/
4319 exceptions_null.cc: Likewise.
4320 * testsuite/27_io/basic_istream/extractors_other/wchar_t/
4321 exceptions_null.cc: Likewise.
4322 * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
4323 * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
4324 * testsuite/27_io/basic_ostream/inserters_other/char/
4325 exceptions_null.cc: Likewise.
4326 * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
4327 exceptions_null.cc: Likewise.
4328 * testsuite/27_io/ios_base/storage/2.cc: Likewise.
4330 2018-04-05 Jonathan Wakely <jwakely@redhat.com>
4332 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
4333 __get calls to avoid ADL and avoid ambiguity due to Clang bug.
4335 2018-04-03 Jonathan Wakely <jwakely@redhat.com>
4338 * include/std/variant (_Move_assign_base::operator=): Fix incorrect
4340 * testsuite/20_util/variant/85183.cc: New.
4342 2018-03-26 Jonathan Wakely <jwakely@redhat.com>
4344 * include/std/variant (__get): Qualify calls to avoid ADL.
4345 (__select_index): Adjust whitespace.
4346 (variant): Add using-declaration to workaround Clang bug.
4348 2018-03-22 Jonathan Wakely <jwakely@redhat.com>
4351 * include/bits/stl_function.h (greater::__not_overloaded)
4352 (less::__not_overloaded, greater_equal::__not_overloaded)
4353 (less_equal::__not_overloaded): Fix ambiguous specializations.
4354 * testsuite/20_util/function_objects/comparisons_pointer.cc: Add
4355 tests for type with overloaded operators.
4357 2018-03-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4360 * testsuite/experimental/memory_resource/resource_adaptor.cc:
4361 xfail execution on 32-bit Solaris/x86.
4363 2018-03-21 Jonathan Wakely <jwakely@redhat.com>
4365 * testsuite/20_util/function_objects/comparisons_pointer.cc: Use
4366 VERIFY instead of assert.
4367 * testsuite/20_util/hash/84998.cc: New test.
4368 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
4369 copy of test adjusted for Debug Mode.
4370 * testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
4373 2018-03-20 François Dumont <fdumont@gcc.gnu.org>
4376 * include/bits/stl_bvector.h: Fix std::hash friend declaration.
4377 * include/std/bitset: Likewise.
4378 * include/bits/stl_map.h (std::map<>): Fix _Rb_tree_merge_helper friend
4380 * include/bits/stl_multimap.h (std::multimap<>): Likewise.
4381 * include/bits/stl_multiset.h (std::multiset<>): Likewise.
4382 * include/bits/stl_set.h (std::set<>): Likewise.
4383 * include/bits/unordered_map.h (std::unordered_map<>): Fix
4384 _Hash_merge_helper friend declaration.
4385 (std::unordered_multimap<>): Likewise.
4386 * include/bits/unordered_set.h (std::unordered_set<>): Likewise.
4387 (std::unordered_multiset<>): Likewise.
4389 2018-03-19 Gerald Pfeifer <gerald@pfeifer.com>
4391 * doc/xml/api.xml: www.fsf.org has moved to https. Also omit
4392 trailing slash for domain level link.
4393 * doc/xml/faq.xml: Ditto.
4394 * doc/xml/manual/appendix_free.xml (software): Ditto.
4395 * doc/xml/manual/intro.xml: Ditto.
4396 * doc/xml/manual/spine.xml: Ditto.
4397 * doc/xml/spine.xml: Ditto.
4399 2018-03-19 Gerald Pfeifer <gerald@pfeifer.com>
4401 * doc/xml/manual/documentation_hacking.xml: Adjust link to
4404 2018-03-17 Jonathan Wakely <jwakely@redhat.com>
4406 * testsuite/20_util/function_objects/comparisons_pointer.cc: Adjust
4407 to compile as C++98.
4409 2018-03-14 Jonathan Wakely <jwakely@redhat.com>
4412 * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
4413 (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
4414 to ensure total order for pointers.
4415 (greater<void>, less<void>, greater_equal<void>, less_equal<void>):
4416 Add operator() overloads for pointer arguments and make generic
4417 overloads dispatch to new _S_cmp functions when comparisons would
4418 use built-in operators for pointers.
4419 * testsuite/20_util/function_objects/comparisons_pointer.cc: New.
4421 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
4425 * crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
4426 * configure: Regenerate.
4427 * include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
4428 (aligned_alloc): Add using-declaration.
4429 * testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
4431 2018-03-09 François Dumont <fdumont@gcc.gnu.org>
4433 * python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
4434 Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
4437 2018-03-09 Jonathan Wakely <jwakely@redhat.com>
4440 * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
4441 Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
4443 src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
4444 src/filesystem/std-ops.cc (create_dir): Likewise.
4446 2018-03-08 François Dumont <fdumont@gcc.gnu.org>
4448 * python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
4449 (StdListIteratorPrinter): Inherit from latter.
4450 (StdFwdListIteratorPrinter): New, inherit from latter.
4451 (StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
4452 when iterator has no associated container.
4453 (build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
4454 __gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
4456 * testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
4457 * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
4459 2018-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
4462 * include/std/optional (_Optional_payload): Split into multiple
4463 specializations that can handle different cases of trivial or
4464 non-trivial assignment operators.
4465 * testsuite/20_util/optional/84601.cc: New.
4466 * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
4468 2018-03-02 Jonathan Wakely <jwakely@redhat.com>
4471 * include/bits/parse_numbers.h (_Number_help): Add partial
4472 specialization to handle digit separators. Adjust partial
4473 specialization for recursion temrination to require _Pow == 1ULL.
4474 * testsuite/20_util/duration/literals/84671.cc: New
4476 2018-02-27 Ville Voutilainen <ville.voutilainen@gmail.com>
4478 Implement the missing bits of LWG 2769
4479 * include/std/any (any_cast(const any&)): Add static_assert.
4480 (any_cast(any&)): Likewise.
4481 (any_cast(any&&)): Likewise, and remove the handling
4482 for copyable-but-not-movable type.
4483 * testsuite/20_util/any/misc/any_cast.cc: Adjust.
4484 * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
4487 2018-02-23 Jonathan Wakely <jwakely@redhat.com>
4490 * include/std/thread (thread::__make_invoker): Construct tuple
4491 directly instead of using make_tuple.
4492 * testsuite/30_threads/async/84532.cc: New.
4493 * testsuite/30_threads/thread/84532.cc: New.
4495 2018-02-20 François Dumont <fdumont@gcc.gnu.org>
4497 * include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
4498 (template<> __aligned_buffer): Define as __aligned_membuf alias.
4500 2018-02-19 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
4503 * configure: Regenerate.
4505 2018-02-15 Jonathan Wakely <jwakely@redhat.com>
4508 * configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
4509 * configure: Regenerate.
4510 * include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
4512 * include/Makefile.in: Regenerate.
4514 2018-01-29 Jonathan Wakely <jwakely@redhat.com>
4517 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
4518 Add -ffloat-store to options for m68k and ia32.
4520 * doc/xml/faq.xml: Update copyright years.
4521 * doc/html/*: Regenerate.
4524 * include/std/any (any::__do_emplace): Only set _M_manager after
4525 constructing the contained object.
4526 * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
4527 * testsuite/20_util/any/modifiers/83658.cc: New test.
4529 2018-01-25 Jonathan Wakely <jwakely@redhat.com>
4532 * include/c_global/cstddef (__byte_operand): Define primary template.
4533 * testsuite/18_support/byte/81076.cc: New test.
4535 2018-01-19 Christophe Lyon <christophe.lyon@linaro.org>
4537 * testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
4538 dg-options and dg-add-options order.
4539 * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
4540 * testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
4542 * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
4543 * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
4545 * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
4547 * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
4548 * testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
4550 * testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
4552 * testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
4554 * testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
4556 * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
4558 * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
4560 * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
4562 * testsuite/special_functions/10_cyl_neumann/check_nan.cc:
4564 * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
4565 * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
4566 * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
4567 * testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
4568 * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
4569 * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
4570 * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
4571 * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
4572 * testsuite/special_functions/18_riemann_zeta/check_nan.cc:
4574 * testsuite/special_functions/19_sph_bessel/check_nan.cc:
4576 * testsuite/special_functions/20_sph_legendre/check_nan.cc:
4578 * testsuite/special_functions/21_sph_neumann/check_nan.cc:
4581 2018-01-18 Uros Bizjak <ubizjak@gmail.com>
4583 * configure.ac (AC_CHECK_HEADERS): Add linux/types.h. Conditionally
4584 include linux/types.h when checking linux/random.h header.
4585 * config.h.in: Regenerate.
4587 * src/c++11/random.cc: Conditionally include linux/types.h.
4589 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
4591 * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
4593 2018-01-16 Jonathan Wakely <jwakely@redhat.com>
4596 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
4597 pattern with exact match for std::cerr.
4599 2018-01-15 Jonathan Wakely <jwakely@redhat.com>
4602 * include/bits/random.h (chi_squared_distribution::param): Update
4603 gamma distribution parameter.
4604 * testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
4608 * include/std/type_traits (has_unique_object_representations_v): Add
4610 * testsuite/20_util/has_unique_object_representations/value.cc: Check
4613 2018-01-15 Ville Voutilainen <ville.voutilainen@gmail.com>
4615 Make optional conditionally
4616 trivially_{copy,move}_{constructible,assignable}
4617 * include/std/optional (_Optional_payload): Fix the comment in
4618 the class head and turn into a primary and one specialization.
4619 (_Optional_payload::_M_engaged): Strike the NSDMI.
4620 (_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
4622 (_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
4624 (_Optional_payload<_Tp, false>::_M_get): Likewise.
4625 (_Optional_payload<_Tp, false>::_M_reset): Likewise.
4626 (_Optional_base_impl): Likewise.
4627 (_Optional_base): Turn into a primary and three specializations.
4628 (optional(nullopt)): Change the base init.
4629 * testsuite/20_util/optional/assignment/8.cc: New.
4630 * testsuite/20_util/optional/cons/trivial.cc: Likewise.
4631 * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
4633 2018-01-15 Jonathan Wakely <jwakely@redhat.com>
4636 * python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
4637 (get_template_arg_list): New.
4638 (StdVariantPrinter._template_args): Remove, use get_template_arg_list
4640 (TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
4641 of strings and regular expressions.
4642 (add_one_template_type_printer): Adapt to new TemplateTypePrinter.
4643 (FilteringTypePrinter): Add docstring. Match using startswith. Use
4644 strip_inline_namespaces instead of strip_versioned_namespace.
4645 (add_one_type_printer): Prepend namespace to match argument.
4646 (register_type_printers): Add type printers for char16_t and char32_t
4647 string types and for types using cxx11 ABI. Update calls to
4648 add_one_template_type_printer to provide default argument dicts.
4649 * testsuite/libstdc++-prettyprinters/80276.cc: New test.
4650 * testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
4651 basic_string<unsigned char> and basic_string<signed char>.
4652 * testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
4653 to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
4655 2018-01-14 Andreas Schwab <schwab@linux-m68k.org>
4658 * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
4660 2018-01-13 Tim Shen <timshen@google.com>
4663 * include/bits/regex.tcc (regex_replace): Fix escaping in sed.
4664 * testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
4665 * testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
4667 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4670 * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
4671 Remove dg-xfail-run-if.
4673 2018-01-10 François Dumont <fdumont@gcc.gnu.org>
4675 * include/bits/forward_list.h
4676 (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
4677 (_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
4678 (_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
4679 (_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
4680 (_Fwd_list_impl()): Add noexcept qualification.
4681 (_Fwd_list_impl(const _Node_alloc_type&)): Delete.
4682 (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
4683 (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
4684 (_Fwd_list_base()): Default.
4685 (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
4686 (_Fwd_list_base(_Fwd_list_base&&)): Default.
4687 (forward_list<>()): Default.
4688 (forward_list<>(forward_list&&)): Default.
4689 (forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
4690 (forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
4691 (forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
4692 * include/bits/forward_list.tcc
4693 (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
4694 _M_impl._M_head move assignment.
4695 (forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
4696 * testsuite/23_containers/forward_list/allocator/default_init.cc: New.
4698 2018-01-09 Jonathan Wakely <jwakely@redhat.com>
4701 * python/libstdcxx/v6/printers.py (SharedPointerPrinter)
4702 (UniquePointerPrinter): Print correct template argument, not type of
4704 (TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
4706 * testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
4708 * testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
4709 weak_ptr of array types.
4711 2018-01-09 François Dumont <fdumont@gcc.gnu.org>
4714 * include/bits/hashtable_policy.h
4715 (__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
4717 (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
4718 (_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
4719 Add false_type parameter.
4720 (_Insert_base::insert): Adapt.
4721 * include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
4723 (_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
4724 Add __n_elt parameter, defaulted to 1.
4725 (_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
4726 policy _M_need_rehash.
4727 (_Hashtable::_M_merge_unique): Pass target number of elements to add to
4728 produce only 1 rehash if necessary.
4729 * testsuite/23_containers/unordered_map/insert/83709.cc: New.
4730 * testsuite/23_containers/unordered_set/insert/83709.cc: New.
4732 2018-01-09 Juraj Oršulić <juraj.orsulic@fer.hr>
4733 Jonathan Wakely <jwakely@redhat.com>
4735 PR libstdc++/59253 (partial)
4736 * python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
4737 type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
4738 (SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
4740 * testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
4741 of unique_ptr printer.
4742 * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
4743 output of shared_ptr printer.
4745 2018-01-05 Jonathan Wakely <jwakely@redhat.com>
4748 * src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
4749 unnecessary symlink_status call.
4750 (remove_all(const path&, error_code&)): Use filesystem::remove.
4751 * src/filesystem/std-ops.cc: Likewise.
4754 * src/filesystem/std-ops.cc (do_copy_file): Use non-null offset with
4758 * src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
4759 report an error for ENOENT.
4760 (remove_all(const path&)): Fix type of result variable.
4761 (remove_all(const path&, error_code&)): Use non-throwing increment
4762 for directory iterator. Call POSIX remove directly to avoid redundant
4763 calls to symlink_status. Do not report errors for ENOENT.
4764 * src/filesystem/std-ops.cc: Likewise.
4765 * testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
4767 * testsuite/experimental/filesystem/operations/remove_all.cc:
4770 2018-01-04 Jonathan Wakely <jwakely@redhat.com>
4773 * src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
4774 redundant call to ec.clear().
4775 (remove_all(const path&, error_code&))): Do not return an error for
4777 * src/filesystem/std-ops.cc: Likewise.
4778 * testsuite/27_io/filesystem/operations/remove.cc: New test.
4779 * testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
4780 results for non-existent paths.
4781 * testsuite/experimental/filesystem/operations/remove.cc: New test.
4782 * testsuite/experimental/filesystem/operations/remove_all.cc: Fix
4783 expected results for non-existent paths.
4785 * include/bits/fs_ops.h (exists(const path&, error_code&))): Only
4786 check status_known once.
4787 * include/experimental/bits/fs_ops.h: Likewise.
4790 * include/std/functional (__is_byte_like): New trait.
4791 (__is_std_equal_to): Remove.
4792 (__boyer_moore_base_t): Use __is_byte_like instead of
4794 * include/experimental/functional (__is_std_equal_to): Remove.
4795 (__boyer_moore_base_t): Use __is_byte_like instead of
4797 * testsuite/20_util/function_objects/83607.cc: New test.
4799 2018-01-03 Ville Voutilainen <ville.voutilainen@gmail.com>
4801 Protect optional's deduction guide with the feature macro
4802 * include/std/optional: Use the feature macro.
4804 2018-01-03 Jakub Jelinek <jakub@redhat.com>
4806 Update copyright years.
4808 Copyright (C) 2018 Free Software Foundation, Inc.
4810 Copying and distribution of this file, with or without modification,
4811 are permitted in any medium without royalty provided the copyright
4812 notice and this notice are preserved.