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