2017-09-27 Richard Biener <rguenther@suse.de>
[official-gcc.git] / libstdc++-v3 / ChangeLog
blobc04155fadbc8b591d360178e07648371f55abe80
1 2017-09-25  Uros Bizjak  <ubizjak@gmail.com>
3         PR c/81854
4         * src/c++98/complex_io.cc (_GLIBCXX_LDBL_COMPAT): Declare alias
5         target as a C++ function with no prototype.
7 2017-09-21  Jonathan Wakely  <jwakely@redhat.com>
9         * testsuite/25_algorithms/clamp/1.cc: Fix order of arguments and
10         expected results when using predicate defining reverse order.
11         * testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
13 2017-09-20  Jonathan Wakely  <jwakely@redhat.com>
15         PR libstdc++/79162
16         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
17         (basic_string::_If_sv): Remove from the overload set when the
18         argument is derived from basic_string.
20         PR libstdc++/79162
21         * include/bits/basic_string.h (basic_string::_If_sv): Remove from the
22         overload set when the argument is derived from basic_string.
23         * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc: New
24         test.
25         * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
26         New test.
28         * testsuite/24_iterators/range_access_cpp17.cc: Fix order of dg-do
29         and dg-options directives. Fix invalid test.
31         PR libstdc++/81469
32         * libsupc++/exception (uncaught_exception): Deprecate for C++17.
33         * testsuite/18_support/exception_ptr/62258.cc: Add -Wno-deprecated.
34         * testsuite/18_support/uncaught_exception/14026.cc: Likewise.
36         * include/bits/c++config (_GLIBCXX17_DEPRECATED): Define.
37         * include/bits/functional_hash.h (__hash_base::result_type)
38         (__hash_base::argument_type): Add _GLIBCXX17_DEPRECATED.
39         * include/std/optional (hash<optional<T>>::result_type)
40         (hash<optional<T>>::argument_type): Add deprecated attribute.
41         (__is_fast_hash<hash<optional<T>>>): Add partial specialization.
42         * include/std/variant (hash<variant<Types...>>::result_type)
43         (hash<variant<Types...>>::argument_type): Add deprecated attribute.
44         (__is_fast_hash<hash<variant<Types...>>>): Add partial specialization.
46         * libsupc++/exception_ptr.h (copy_exception): Remove deprecated
47         non-standard function.
49         PR libstdc++/82262
50         * include/std/optional (__optional_hash_call_base): Add template
51         parameter for remove_const_t<_Tp> and use it consistently.
52         * testsuite/20_util/optional/hash.cc: Test optional<const T>.
54 2017-09-19  Jonathan Wakely  <jwakely@redhat.com>
56         PR libstdc++/71500
57         * include/bits/regex_executor.tcc
58         (_Backref_matcher<BidIt, regex_traits<C>>::_M_apply): Use
59         std::__equal4 instead of C++14 4-iterator overloads of std::equal.
60         * include/bits/stl_algobase.h (__equal4): New functions implementing
61         4-iterator overloads of std::equal for use in C++11.
62         (equal(It1, It1, It2, It2), equal(It1, It1, It2, It2, BinaryPred)):
63         Move function bodies to new __equal4 functions.
64         * testsuite/28_regex/simple_c++11.cc: New.
66         PR libstdc++/82254
67         * include/std/type_traits (__is_invocable): Add partial specialization
68         for INVOKE<void> case and remove is_void<R> check from partial
69         specialization for INVOKE<R> case.
70         (__is_nt_invocable_impl): New helper for is_nothrow_invocable_r.
71         (is_nothrow_invocable_r): Use __is_nt_invocable_impl.
72         * testsuite/20_util/is_nothrow_invocable/value.cc: Add tests for
73         conversions that can throw or fail to convert. Use static assert
74         strings to explain negative results.
75         * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Use
76         is_nothrow_constructible in is_nt_invocable_conv.
78 2017-09-18  Jonathan Wakely  <jwakely@redhat.com>
80         PR libstdc++/81468
81         * testsuite/20_util/duration/cons/dr1177.cc: Fix incorrect test and
82         improve static assertion messages.
84         * include/std/utility (_Itup_cat, _Make_integer_sequence): Remove.
85         (_Build_index_tuple, make_integer_sequence): Use built-in to generate
86         pack expansion.
88         PR libstdc++/71187
89         * include/std/type_traits (__declval): New function to deduce return
90         type of declval.
91         (__declval_protector::_delegate): Remove.
92         (declval): Use __declval instead of add_rvalue_reference and
93         __declval_protector::__delegate.
94         * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
95         lineno.
96         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
97         Likewise.
98         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
99         Likewise.
101 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
103         * testsuite/libstdc++-prettyprinters/cxx17.cc: Use -std=c++17 or
104         -std=gnu++17 instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead
105         of c++1z and c++17_only instead of c++1z_only.  Adjust expected
106         diagnostics and comments refering to 1z to 17.
107         * testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
108         * testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
109         * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
110         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
111         * testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
112         Likewise.
113         * testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
114         * testsuite/18_support/launder/1.cc (test02): Likewise.
115         * testsuite/18_support/launder/requirements_neg.cc: Likewise.
116         * testsuite/18_support/launder/requirements.cc: Likewise.
117         * testsuite/18_support/byte/requirements.cc: Likewise.
118         * testsuite/18_support/byte/ops.cc: Likewise.
119         * testsuite/18_support/byte/global_neg.cc: Likewise.
120         * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
121         Likewise.
122         * testsuite/27_io/types/4.cc: Likewise.
123         * testsuite/25_algorithms/sample/81221.cc: Likewise.
124         * testsuite/25_algorithms/sample/1.cc: Likewise.
125         * testsuite/25_algorithms/sample/2.cc: Likewise.
126         * testsuite/25_algorithms/search/searcher.cc: Likewise.
127         * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
128         * testsuite/experimental/filesystem/path/construct/string_view.cc:
129         Likewise.
130         * testsuite/24_iterators/range_access_cpp17.cc: Likewise.
131         * testsuite/24_iterators/container_access.cc: Likewise.
132         * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
133         * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
134         * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
135         * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
136         * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
137         * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
138         * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
139         * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
140         * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
141         * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
142         * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
143         * testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
144         * testsuite/20_util/shared_ptr/observers/array.cc (struct A): Likewise.
145         * testsuite/20_util/pair/cons/deduction.cc: Likewise.
146         * testsuite/20_util/variant/deduction.cc: Likewise.
147         * testsuite/20_util/tuple/78939.cc: Likewise.
148         * testsuite/20_util/tuple/cons/deduction.cc: Likewise.
149         * testsuite/20_util/void_t/1.cc: Likewise.
150         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Likewise.
151         * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
152         * testsuite/20_util/addressof/requirements/constexpr.cc: Likewise.
153         * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
154         * testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
155         Likewise.
156         * testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
157         Likewise.
158         * testsuite/20_util/has_unique_object_representations/value.cc:
159         Likewise.
160         * testsuite/20_util/time_point/arithmetic/constexpr.cc: Likewise.
161         * testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
162         * testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
163         * testsuite/20_util/function/cons/deduction.cc: Likewise.
164         * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
165         Likewise.
166         * testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
167         * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
168         Likewise.
169         * testsuite/20_util/is_aggregate/value.cc: Likewise.
170         * testsuite/26_numerics/lcm/1.cc: Likewise.
171         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
172         * testsuite/26_numerics/gcd/1.cc: Likewise.
173         * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
174         * testsuite/26_numerics/valarray/deduction.cc: Likewise.
175         * testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
176         * testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
177         * testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
178         Likewise.
179         * testsuite/23_containers/array/cons/deduction.cc: Likewise.
180         * testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
181         * testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
182         Likewise.
183         * testsuite/23_containers/deque/cons/deduction.cc: Likewise.
184         * testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
185         Likewise.
186         * testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
187         Likewise.
188         * testsuite/23_containers/list/cons/deduction.cc: Likewise.
189         * testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
190         Likewise.
191         * testsuite/23_containers/forward_list/cons/deduction.cc: Likewise.
192         * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Likewise.
193         * testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
194         Likewise.
195         * testsuite/23_containers/vector/cons/deduction.cc: Likewise.
196         * testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
197         Likewise.
198         * testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
199         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Likewise.
200         * testsuite/21_strings/basic_string/cons/char/79162.cc: Likewise.
201         * testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
202         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
203         Likewise.
204         * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: Likewise.
205         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
206         Likewise.
207         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
208         Likewise.
209         * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
210         Likewise.
211         * testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
212         Likewise.
213         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
214         Likewise.
215         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
216         Likewise.
218 2017-09-13  Jonathan Wakely  <jwakely@redhat.com>
220         PR libstdc++/81468
221         * include/std/chrono (__enable_if_is_duration)
222         (__disable_if_is_duration): New alias templates to simplify SFINAE.
223         (duration_cast, floor, ceil): Use __enable_if_is_duration.
224         (duration::__is_float, duration::__is_harmonic): New alias templates
225         to simplify SFINAE.
226         (duration::duration(const _Rep2&)): Use _Require, __is_float and
227         __is_harmonic.
228         (duration::duration(const duration<_Rep2, _Period2>&)): Likewise.
229         (__common_rep_type): Remove, replace with ...
230         (__common_rep_t): New alias template.
231         (operator*, operator/, operator%): Use __common_rep_t and
232         __disable_if_is_duration.
233         (time_point::time_point(const time_point<clock, _Dur2>&)): Add missing
234         constraint from LWG DR 1177.
235         * testsuite/20_util/duration/cons/dr1177.cc: New.
236         * testsuite/20_util/duration/literals/range.cc: Update dg-error line.
237         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
238         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
239         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
240         * testsuite/20_util/time_point/cons/81468.cc: New.
242         * doc/doxygen/mainpage.html: Fix broken URLs.
244         PR libstdc++/81835
245         * doc/xml/manual/extensions.xml: Replace unstable URL.
246         * doc/html/manual/ext_demangling.html: Regenerate.
247         * libsupc++/cxxabi.h (__cxa_demangle): Fix broken URL.
249         * include/bits/allocated_ptr.h (__allocated_ptr::get): Use
250         __to_address.
251         (__allocated_ptr::_S_raw_ptr): Remove.
252         * include/bits/forward_list.h (_Fwd_list_base::_M_get_node): Use
253         __to_address.
254         * include/bits/hashtable_policy.h (_Hashtable_alloc): Likewise.
255         * include/bits/ptr_traits.h (__to_address): Define new function
256         template.
257         * include/bits/shared_ptr_base.h (__shared_ptr): Use __to_address.
258         (__shared_ptr::_S_raw_ptr): Remove.
259         * include/bits/stl_vector.h [__cplusplus >= 201103L]
260         (vector::_M_data_ptr): Use __to_address.
261         [__cplusplus < 201103L] (vector::_M_data_ptr): Don't dereference
262         possibly invalid pointers.
263         * include/ext/alloc_traits.h (__alloc_traits::construct)
264         (__alloc_traits::destroy): Use __to_address.
266 2017-09-12  Jonathan Wakely  <jwakely@redhat.com>
268         PR libstdc++/79433
269         * include/Makefile.am: Remove <bits/c++14_warning.h>.
270         * include/Makefile.in: Regenerate.
271         * include/bits/c++14_warning.h: Remove.
272         * include/experimental/algorithm: Do not include <c++14_warning.h>.
273         * include/experimental/any: Likewise.
274         * include/experimental/array: Likewise.
275         * include/experimental/bits/erase_if.h: Likewise.
276         * include/experimental/bits/lfts_config.h: Likewise.
277         * include/experimental/bits/shared_ptr.h: Likewise.
278         * include/experimental/bits/string_view.tcc: Likewise.
279         * include/experimental/chrono: Likewise.
280         * include/experimental/deque: Likewise.
281         * include/experimental/filesystem: Do not include <c++0x_warning.h>.
282         * include/experimental/forward_list: Do not include <c++14_warning.h>.
283         * include/experimental/functional: Likewise.
284         * include/experimental/iterator: Likewise.
285         * include/experimental/list: Likewise.
286         * include/experimental/map: Likewise.
287         * include/experimental/memory: Likewise.
288         * include/experimental/numeric: Likewise.
289         * include/experimental/optional: Likewise.
290         * include/experimental/propagate_const: Likewise.
291         * include/experimental/ratio: Likewise.
292         * include/experimental/regex: Likewise.
293         * include/experimental/set: Likewise.
294         * include/experimental/string: Likewise.
295         * include/experimental/string_view: Likewise.
296         * include/experimental/system_error: Likewise.
297         * include/experimental/tuple: Likewise.
298         * include/experimental/type_traits: Likewise.
299         * include/experimental/unordered_map: Likewise.
300         * include/experimental/unordered_set: Likewise.
301         * include/experimental/vector: Likewise.
302         * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error
303         line number.
304         * testsuite/experimental/array/neg.cc: Likewise.
305         * testsuite/experimental/propagate_const/assignment/move_neg.cc:
306         Likewise.
307         * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
308         * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
309         * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
310         * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
311         * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
313         PR libstdc++/79433
314         * doc/xml/manual/status_cxx2017.xml: Update feature-test macros.
315         * doc/html/*: Regenerate.
316         * include/Makefile.am: Remove <bits/c++17_warning.h>.
317         * include/Makefile.in: Regenerate.
318         * include/bits/c++17_warning.h: Remove.
319         * include/bits/string_view.tcc: Do not include <bits/c++17_warning.h>
320         for pre-C++17 modes.
321         * include/std/any: Likewise.
322         (__cpp_lib_any): Define.
323         * include/std/mutex (__cpp_lib_scoped_lock): Adjust value as per new
324         SD-6 draft.
325         * include/std/numeric (__cpp_lib_gcd_lcm): Define as per new SD-6
326         draft.
327         * include/std/optional: Do not include <bits/c++17_warning.h>.
328         (__cpp_lib_optional): Define.
329         * include/std/shared_mutex: Do not include <bits/c++14_warning.h>.
330         * include/std/string_view: Do not include <bits/c++17_warning.h>.
331         (__cpp_lib_string_view): Define.
332         * include/std/variant: Do not include <bits/c++17_warning.h>.
333         (__cpp_lib_variant): Define.
334         * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error line
335         numbers.
336         * testsuite/26_numerics/gcd/1.cc: Test for __cpp_lib_gcd_lcm.
337         * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line
338         numbers.
339         * testsuite/26_numerics/lcm/1.cc: Test for __cpp_lib_gcd_lcm.
340         * testsuite/26_numerics/lcm/lcm_neg.cc: Adjust dg-error line
341         numbers.
342         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Adjust
343         expected value of __cpp_lib_scoped_lock.
345         PR libstdc++/70483
346         * include/experimental/bits/string_view.tcc (basic_string_view::find)
347         (basic_string_view::rfind, basic_string_view::find_first_of)
348         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
349         (basic_string_view::find_last_not_of): Add constexpr specifier.
350         * include/experimental/string_view (basic_string_view::remove_prefix)
351         (basic_string_view::remove_suffix, basic_string_view::swap)
352         (basic_string_view::compare, basic_string_view::find)
353         (basic_string_view::rfind, basic_string_view::find_first_of)
354         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
355         (basic_string_view::find_last_not_of, operator==, operator!=)
356         (operator<, operator>, operator<=, operator>=): Likewise.
357         * testsuite/experimental/string_view/operations/compare/char/70483.cc:
358         New.
360 2017-09-11  Jonathan Wakely  <jwakely@redhat.com>
362         PR libstdc++/70483
363         * include/bits/string_view.tcc (basic_string_view::find)
364         (basic_string_view::rfind, basic_string_view::find_first_of)
365         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
366         (basic_string_view::find_last_not_of): Add constexpr specifier.
367         * include/std/string_view (basic_string_view::operator=)
368         (basic_string_view::rbegin, basic_string_view::rend)
369         (basic_string_view::crbegin, basic_string_view::crend)
370         (basic_string_view::remove_prefix, basic_string_view::remove_suffix)
371         (basic_string_view::swap, basic_string_view::compare)
372         (basic_string_view::find, basic_string_view::rfind)
373         (basic_string_view::find_first_of, basic_string_view::find_last_of)
374         (basic_string_view::find_first_not_of)
375         (basic_string_view::find_last_not_of, basic_string_view::_M_check)
376         (basic_string_view::_M_limit, operator==, operator!=, operator<)
377         (operator>, operator<=, operator>=): Likewise.
378         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
379         char/1.cc: Repeat tests in constexpr context.
380         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
381         wchar_t/1.cc: Likewise.
382         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
383         char/1.cc: Likewise.
384         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
385         wchar_t/1.cc: Likewise.
386         * testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
387         Likewise.
388         * testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
389         Likewise.
390         * testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
391         Likewise.
392         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
393         Likewise.
394         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
395         Likewise.
396         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
397         Likewise.
398         * testsuite/21_strings/basic_string_view/operators/char/2.cc:
399         Likewise.
400         * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
401         Likewise.
402         * testsuite/21_strings/basic_string_view/range_access/char/1.cc: Test
403         cbegin, cend, rbegin, rend, crbegin and crend.
404         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
405         Likewise.
406         * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
407         Remove trailing whitespace.
408         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
409         1.cc: Likewise.
410         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
411         New.
412         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
413         New.
414         * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
415         New.
416         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
417         2.cc: New.
419 2017-09-11  Tim Shen  <timshen@google.com>
421         PR libstdc++/71500
422         * include/bits/regex_executor.tcc: Support icase in regex_traits<...>
423         for back reference matches.
424         * testsuite/28_regex/regression.cc: Test case.
426 2017-09-11  Jonathan Wakely  <jwakely@redhat.com>
428         * testsuite/21_strings/basic_string/lwg2946.cc: Adjust for
429         compatibility with old COW std::string.
431 2017-09-09  Gerald Pfeifer  <gerald@pfeifer.com>
433         * doc/xml/manual/allocator.xml: Adjust link for Hoard.
434         * doc/html/manual/memory.html: Regenerate.
436 2017-09-04  Daniel Kruegler  <daniel.kruegler@gmail.com>
438         PR libstdc++/79162
439         Implement LWG 2946, LWG 2758's resolution missed further corrections
440         * include/bits/basic_string.h (basic_string::compare): Add missing
441         required noexcept specifications.
442         (basic_string): Introduce internal _S_to_string_view and __sv_wrapper
443         for implicit string_view conversion.
444         (basic_string::basic_string): Fix explicit string_view conversion by
445         implicit conversion using _S_to_string_view and __sv_wrapper.
446         (basic_string): Introduce internal basic_string(__sv_wrapper, Alloc)
447         constructor.
448         (basic_string): Fix operator=(T) template by operator=(const T&)
449         template for uncopyable types (PR 79162).
450         (basic_string::operator+=, basic_string::append, basic_string::assign)
451         (basic_string::insert, basic_string::replace, basic_string::find)
452         (basic_string::rfind, basic_string::find_first_of)
453         (basic_string::find_last_of, basic_string::find_first_not_of)
454         (basic_string::find_last_not_of, basic_string::compare): Replace
455         __sv_type argument by template const T& (LWG 2946) and correct
456         documentation describing __sv_type argument.
457         (basic_string::find, basic_string::rfind, basic_string::find_first_of)
458         (basic_string::find_last_of, basic_string::find_first_not_of)
459         (basic_string::find_last_not_of, basic_string::compare): Replace
460         unconditional noexcept specification by conditional noexcept
461         specification to partially balance the removal of noexcept by LWG 2946.
462         * testsuite/21_strings/basic_string/79162.cc: New.
463         * testsuite/21_strings/basic_string/lwg2946.cc: New.
465 2017-08-31  Jonathan Wakely  <jwakely@redhat.com>
467         PR c++/82039
468         * include/ext/new_allocator.h (__gnu_cxx::new_allocator::allocate):
469         Adjust null pointer constant to avoid warning.
471 2017-08-24  François Dumont  <fdumont@gcc.gnu.org>
473         * include/bits/stl_list.h
474         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_S_distance): Remove.
475         (_List_impl(_Node_alloc_type&&, _List_impl&&)): New.
476         (_List_base(_Node_alloc_type&&, _List_base&&)): New, use latter.
477         [!_GLIBCXX_INLINE_VERSION](_List_base(_Node_alloc_type&&,_List_base&&)):
478         Remove.
479         (_List_base(_Node_alloc_type&&)): New.
480         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_distance): Remove.
481         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_node_count): Remove.
482         (list<>::_M_node_count): New.
483         (list<>::size()): Adapt to call latter.
484         (list<>::_S_distance(const_iterator, const_iterator)): New.
485         (list<>::splice(iterator, list&, const_iterator, const_iterator)):
486         Adapt to call latter.
487         (list(list&&, const allocator_type&, true_type)): New.
488         (list(list&&, const allocator_type&, false_type)): New.
489         (list(list&&, const allocator_type&)): Adapt to call latters.
491 2017-08-21  Jonathan Wakely  <jwakely@redhat.com>
493         PR libstdc++/81912
494         * include/bits/stl_iterator_base_types.h (__iterator_category): Add
495         constexpr for C++11 and later.
496         * testsuite/24_iterators/container_access.cc: Add target selector.
497         * testsuite/24_iterators/range_access.cc: Fix clause number in
498         comment.
499         * testsuite/24_iterators/range_access_cpp14.cc: Likewise.
500         * testsuite/24_iterators/range_access_cpp17.cc: New.
502 2017-08-21  Richard Biener  <rguenther@suse.de>
504         * testsuite/libstdc++-prettyprinters/prettyprinters.exp: Run all
505         tests with -flto as well if supported.
507 2017-08-20  Martin Sebor  <msebor@redhat.com>
509         PR c/81854
510         * src/c++98/compatibility.cc (_GLIBCXX_3_4_SYMVER): Declare alias
511         target as a C++ function with no prototype.
512         (_GLIBCXX_3_4_5_SYMVER): Ditto.
514 2017-08-20  John David Anglin  <danglin@gcc.gnu.org>
516         PR testsuite/81056
517         * testsuite/17_intro/names.cc: Undef 'd' and 'r' on __hpux__.
519 2017-08-18  Jonathan Wakely  <jwakely@redhat.com>
521         * include/bits/hashtable_policy.h (_ReuseOrAllocNode): Remove
522         __value_alloc_type and __value_alloc_traits typedefs.
523         (_ReuseOrAllocNode::operator()): Call construct and destroy on the
524         node allocator.
525         (_Hashtable_alloc): Simplify __value_alloc_traits typedef.
526         (_Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&...)): Call
527         construct on the node allocator.
528         (_Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_type*)): Call
529         destroy on the node allocator.
531         PR libstdc++/81891
532         * include/bits/hashtable.h (_Hashtable(_InputIterator, _InputIterator,
533         size_type, const _H1&, const _H2&, const _Hash&, const _Equal&,
534         const _ExtractKey&, const allocator_type&)): Let destructor do clean
535         up if an exception is thrown.
536         * testsuite/23_containers/unordered_map/cons/81891.cc: New.
538 2017-08-11  Jonathan Wakely  <jwakely@redhat.com>
540         PR libstdc++/81808
541         * testsuite/27_io/basic_fstream/53984.cc: Adjust test for targets
542         that allow opening a directory as a FILE and reading from it.
544 2017-08-09  Jonathan Wakely  <jwakely@redhat.com>
546         * include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP):
547         Replace with _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP and use
548         __is_identifier to set it.
550 2017-08-09  Katsuhiko Nishimra  <ktns.87@gmail.com>
552         * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Use
553         __is_identifier instead of __has_builtin.
555 2017-08-09  Jonathan Wakely  <jwakely@redhat.com>
557         PR libstdc++/79820
558         PR libstdc++/81751
559         * config/io/basic_file_stdio.cc (sys_open(FILE*, ios_base::openmode)):
560         Call fflush on the stream instead of calling sync() while _M_cfile is
561         null. Restore original value of errno.
562         * testsuite/ext/stdio_filebuf/char/79820.cc: New.
563         * testsuite/ext/stdio_filebuf/char/81751.cc: New.
565 2017-07-31  Marek Polacek  <polacek@redhat.com>
567         PR libstdc++/81599
568         * include/bits/stl_stack.h: Fix typo.
570 2017-07-26  Jonathan Wakely  <jwakely@redhat.com>
572         * testsuite/27_io/basic_fstream/53984.cc: Fix test.
574 2017-07-26  Paolo Carlini  <paolo.carlini@oracle.com>
576         * testsuite/27_io/basic_fstream/53984.cc: Fix typo in dg-require
577         directive.
579 2017-07-25  Jonathan Wakely  <jwakely@redhat.com>
581         PR libstdc++/53984
582         * include/bits/basic_ios.h (basic_ios::_M_setstate): Adjust comment.
583         * include/bits/istream.tcc (basic_istream::sentry): Handle exceptions
584         during construction.
585         * include/std/istream: Adjust comments for formatted input functions
586         and unformatted input functions.
587         * testsuite/27_io/basic_fstream/53984.cc: New.
588         * testsuite/27_io/basic_istream/sentry/char/53984.cc: New.
590         * include/bits/ios_base.h (ios_base::io_state, ios_base::open_mode)
591         (ios_base::seek_dir): Remove for C++17.
592         * include/std/streambuf (basic_streambuf::stossc): Remove for C++17.
593         Add deprecated attribute for C++11 and C++14.
594         * testsuite/27_io/types/1.cc: Don't run for C++17 and later.
595         * testsuite/27_io/types/4.cc: New.
597 2017-07-23  Michael Collison  <michael.collison@arm.com>
599         Add optimized implementation of mersenne twister for aarch64
600         * config/cpu/aarch64/opt/ext/opt_random.h: New file.
601         (__arch64_recursion): New function.
602         (__aarch64_lsr_128): New function.
603         (__aarch64_lsl_128): New function.
604         (operator==): New function.
605         (simd_fast_mersenne_twister_engine): Implement
606         method _M_gen_rand.
607         * config/cpu/aarch64/opt/bits/opt_random.h: New file.
608         * include/ext/random: (simd_fast_mersenne_twister_engine):
609         add _M_state private array.
611 2017-07-23  François Dumont  <fdumont@gcc.gnu.org>
613         PR libstdc++/81064
614         * include/bits/algorithmfwd.h: Reorganize versioned namespace.
615         * include/bits/basic_string.h: Likewise.
616         * include/bits/c++config: Likewise.
617         * include/bits/deque.tcc: Likewise.
618         * include/bits/forward_list.h: Likewise.
619         * include/bits/forward_list.tcc: Likewise.
620         * include/bits/hashtable_policy.h: Likewise.
621         * include/bits/list.tcc: Likewise.
622         * include/bits/move.h: Likewise.
623         * include/bits/quoted_string.h: Likewise.
624         * include/bits/random.h: Likewise.
625         * include/bits/random.tcc: Likewise.
626         * include/bits/regex.h: Likewise.
627         * include/bits/regex.tcc: Likewise.
628         * include/bits/regex_automaton.h: Likewise.
629         * include/bits/regex_automaton.tcc: Likewise.
630         * include/bits/regex_compiler.h: Likewise.
631         * include/bits/regex_compiler.tcc: Likewise.
632         * include/bits/regex_constants.h: Likewise.
633         * include/bits/regex_error.h: Likewise.
634         * include/bits/regex_executor.h: Likewise.
635         * include/bits/regex_executor.tcc: Likewise.
636         * include/bits/regex_scanner.h: Likewise.
637         * include/bits/regex_scanner.tcc: Likewise.
638         * include/bits/specfun.h: Likewise.
639         * include/bits/stl_algo.h: Likewise.
640         * include/bits/stl_algobase.h: Likewise.
641         * include/bits/stl_bvector.h: Likewise.
642         * include/bits/stl_deque.h: Likewise.
643         * include/bits/stl_iterator.h: Likewise.
644         * include/bits/stl_iterator_base_funcs.h: Likewise.
645         * include/bits/stl_list.h: Likewise.
646         * include/bits/stl_map.h: Likewise.
647         * include/bits/stl_multimap.h: Likewise.
648         * include/bits/stl_multiset.h: Likewise.
649         * include/bits/stl_relops.h: Likewise.
650         * include/bits/stl_set.h: Likewise.
651         * include/bits/stl_vector.h: Likewise.
652         * include/bits/uniform_int_dist.h: Likewise.
653         * include/bits/unordered_map.h: Likewise.
654         * include/bits/unordered_set.h: Likewise.
655         * include/bits/vector.tcc: Likewise.
656         * include/c_global/cmath: Likewise.
657         * include/c_std/cmath: Likewise.
658         * include/decimal/decimal: Likewise.
659         * include/decimal/decimal.h: Likewise.
660         * include/experimental/algorithm: Likewise.
661         * include/experimental/any: Likewise.
662         * include/experimental/array: Likewise.
663         * include/experimental/bits/erase_if.h: Likewise.
664         * include/experimental/bits/fs_dir.h: Likewise.
665         * include/experimental/bits/fs_fwd.h: Likewise.
666         * include/experimental/bits/fs_ops.h: Likewise.
667         * include/experimental/bits/fs_path.h: Likewise.
668         * include/experimental/bits/lfts_config.h: Likewise.
669         * include/experimental/bits/shared_ptr.h: Likewise.
670         * include/experimental/bits/string_view.tcc: Likewise.
671         * include/experimental/chrono: Likewise.
672         * include/experimental/deque: Likewise.
673         * include/experimental/filesystem: Likewise.
674         * include/experimental/forward_list: Likewise.
675         * include/experimental/functional: Likewise.
676         * include/experimental/iterator: Likewise.
677         * include/experimental/list: Likewise.
678         * include/experimental/map: Likewise.
679         * include/experimental/memory: Likewise.
680         * include/experimental/memory_resource: Likewise.
681         * include/experimental/numeric: Likewise.
682         * include/experimental/optional: Likewise.
683         * include/experimental/propagate_const: Likewise.
684         * include/experimental/random: Likewise.
685         * include/experimental/ratio: Likewise.
686         * include/experimental/regex: Likewise.
687         * include/experimental/set: Likewise.
688         * include/experimental/source_location: Likewise.
689         * include/experimental/string: Likewise.
690         * include/experimental/string_view: Likewise.
691         * include/experimental/system_error: Likewise.
692         * include/experimental/tuple: Likewise.
693         * include/experimental/type_traits: Likewise.
694         * include/experimental/unordered_map: Likewise.
695         * include/experimental/unordered_set: Likewise.
696         * include/experimental/utility: Likewise.
697         * include/experimental/vector: Likewise.
698         * include/ext/bitmap_allocator.h: Likewise.
699         * include/ext/codecvt_specializations.h: Likewise.
700         * include/ext/rope: Likewise.
701         * include/ext/typelist.h: Likewise.
702         * include/std/chrono: Likewise.
703         * include/std/complex: Likewise.
704         * include/std/functional: Likewise.
705         * include/std/numeric: Likewise.
706         * include/std/string_view: Likewise.
707         * include/std/thread: Likewise.
708         * include/std/variant: Likewise.
709         * include/tr1/array: Likewise.
710         * include/tr1/bessel_function.tcc: Likewise.
711         * include/tr1/beta_function.tcc: Likewise.
712         * include/tr1/cmath: Likewise.
713         * include/tr1/complex: Likewise.
714         * include/tr1/ell_integral.tcc: Likewise.
715         * include/tr1/exp_integral.tcc: Likewise.
716         * include/tr1/functional: Likewise.
717         * include/tr1/functional_hash.h: Likewise.
718         * include/tr1/gamma.tcc: Likewise.
719         * include/tr1/hashtable.h: Likewise.
720         * include/tr1/hashtable_policy.h: Likewise.
721         * include/tr1/hypergeometric.tcc: Likewise.
722         * include/tr1/legendre_function.tcc: Likewise.
723         * include/tr1/modified_bessel_func.tcc: Likewise.
724         * include/tr1/poly_hermite.tcc: Likewise.
725         * include/tr1/poly_laguerre.tcc: Likewise.
726         * include/tr1/random.h: Likewise.
727         * include/tr1/random.tcc: Likewise.
728         * include/tr1/regex: Likewise.
729         * include/tr1/riemann_zeta.tcc: Likewise.
730         * include/tr1/shared_ptr.h: Likewise.
731         * include/tr1/special_function_util.h: Likewise.
732         * include/tr1/tuple: Likewise.
733         * include/tr1/type_traits: Likewise.
734         * include/tr1/unordered_map.h: Likewise.
735         * include/tr1/unordered_set.h: Likewise.
736         * include/tr1/utility: Likewise.
737         * include/tr2/bool_set: Likewise.
738         * include/tr2/bool_set.tcc: Likewise.
739         * include/tr2/dynamic_bitset: Likewise.
740         * include/tr2/dynamic_bitset.tcc: Likewise.
741         * include/tr2/ratio: Likewise.
742         * include/tr2/type_traits: Likewise.
743         * src/c++11/chrono.cc: Likewise.
744         * src/c++11/compatibility-c++0x.cc: Likewise.
745         * src/c++11/compatibility-chrono.cc: Likewise.
746         * src/c++11/cxx11-shim_facets.cc: Likewise.
747         * src/c++11/hashtable_c++0x.cc: Likewise.
748         * src/c++11/placeholders.cc: Likewise.
749         * src/c++11/thread.cc: Likewise.
750         * src/c++98/bitmap_allocator.cc: Likewise.
751         * src/c++98/hashtable_tr1.cc: Likewise.
752         * src/c++98/list.cc: Likewise.
753         * src/shared/hashtable-aux.cc: Likewise.
754         * testsuite/20_util/duration/literals/range.cc: Adapt line number.
755         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
756         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
757         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
758         * testsuite/20_util/forward/c_neg.cc: Likewise.
759         * testsuite/20_util/forward/f_neg.cc: Likewise.
760         * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
761         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
762         * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
763         * python/libstdcxx/v6/printers.py: Adapt.
765 2017-07-20  Jonathan Wakely  <jwakely@redhat.com>
767         * config/allocator/malloc_allocator_base.h [__SANITIZE_ADDRESS__]
768         (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define.
769         * config/allocator/new_allocator_base.h [__SANITIZE_ADDRESS__]
770         (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define.
771         * doc/xml/manual/using.xml (_GLIBCXX_SANITIZE_VECTOR): Document macro.
772         * include/bits/stl_vector.h [_GLIBCXX_SANITIZE_VECTOR]
773         (_Vector_impl::_Asan, _Vector_impl::_Asan::_Reinit)
774         (_Vector_impl::_Asan::_Grow, _GLIBCXX_ASAN_ANNOTATE_REINIT)
775         (_GLIBCXX_ASAN_ANNOTATE_GROW, _GLIBCXX_ASAN_ANNOTATE_GREW)
776         (_GLIBCXX_ASAN_ANNOTATE_SHRINK, _GLIBCXX_ASAN_ANNOTATE_BEFORE_DEALLOC):
777         Define annotation helper types and macros.
778         (vector::~vector, vector::push_back, vector::pop_back)
779         (vector::_M_erase_at_end): Add annotations.
780         * include/bits/vector.tcc (vector::reserve, vector::emplace_back)
781         (vector::insert, vector::_M_erase, vector::operator=)
782         (vector::_M_fill_assign, vector::_M_assign_aux)
783         (vector::_M_insert_rval, vector::_M_emplace_aux)
784         (vector::_M_insert_aux, vector::_M_realloc_insert)
785         (vector::_M_fill_insert, vector::_M_default_append)
786         (vector::_M_shrink_to_fit, vector::_M_range_insert): Annotate.
788 2017-07-19  Jonathan Wakely  <jwakely@redhat.com>
790         PR libstdc++/81476
791         * include/bits/vector.tcc (vector::_M_range_insert<_InputIterator>):
792         Only insert elements one-by-one when inserting at the end.
793         * testsuite/performance/23_containers/insert/81476.cc: New.
795 2017-07-19  Volker Reichelt  <v.reichelt@netcologne.de>
797         * libsupc++/new (bad_array_new_length): Remove redundant
798         semicolon after in-class member function definition.
799         * include/bits/locale_facets.h (ctype_byname, num_put): Likewise.
800         * include/bits/locale_facets_nonio.h (time_put_byname): Likewise.
801         * include/bits/random.h (mersenne_twister_engine): Likewise.
802         * include/tr1/random.h (mersenne_twister): Likewise
803         * include/ext/random (simd_fast_mersenne_twister_engine): Likewise.
804         * include/ext/rope (char_producer, _Rope_char_consumer,
805         _Rope_self_destruct_ptr, _Rope_const_iterator, _Rope_iterator):
806         Likewise.
807         * include/ext/ropeimpl.h (_Rope_flatten_char_consumer,
808         _Rope_insert_char_consumer): Likewise.
810 2017-07-19  Jonathan Wakely  <jwakely@redhat.com>
812         * include/bits/fstream.tcc (basic_filebuf::xsgetn)
813         (basic_filebuf::xsputn, basic_filebuf::seekoff): Fix indentation.
815         * testsuite/util/testsuite_iterators.h: Fix indentation.
817         * testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: Add dg-require.
819 2017-07-18  Jonathan Wakely  <jwakely@redhat.com>
821         PR libstdc++/81395
822         * include/bits/fstream.tcc (basic_filebuf::xsgetn): Don't set buffer
823         pointers for write mode after reading.
824         * testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: New.
826 2017-07-18  François Dumont  <fdumont@gcc.gnu.org>
828         * include/bits/stl_list.h
829         (struct _List_node_header): New.
830         (_List_impl()): Fix noexcept qualification.
831         (_List_impl(_List_impl&&)): New, default.
832         (_List_base()): Default.
833         (_List_base(_List_base&&)): Default.
834         (_List_base::_M_move_nodes): Adapt to use
835         _List_node_header._M_move_nodes.
836         (_List_base::_M_init): Likewise.
837         (list<>()): Default.
838         (list<>(list&&)): Default.
839         (list<>::_M_move_assign(list&&, true_type)): Use _M_move_nodes.
840         (__distance(_List_const_iterator<>, _List_const_iterator<>,
841         input_iterator_tag)): Adapt.
842         * testsuite/23_containers/list/allocator/default_init.cc: New.
844 2017-07-15  Jonathan Wakely  <jwakely@redhat.com>
846         * include/std/mutex (scoped_lock): Reorder std::adopt_lock_t parameter
847         as per P0739R0.
848         * testsuite/30_threads/scoped_lock/cons/1.cc: Reorder arguments.
849         * testsuite/30_threads/scoped_lock/cons/deduction.cc: Test deduction
850         with std::adopt_lock_t.
851         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Check
852         feature-test macro.
854 2017-07-14  Jason Merrill  <jason@redhat.com>
855             Jonathan Wakely  <jwakely@redhat.com>
857         * include/std/variant (variant::variant(_Tp&&)): Constrain to remove
858         the constructor for empty variants from the candidate functions
859         during class template argument deduction.
860         * testsuite/20_util/variant/deduction.cc: New.
862 2017-07-11  Jonathan Wakely  <jwakely@redhat.com>
864         * doc/xml/faq.xml: Update several old entries. Improve
865         cross-references.
866         * doc/xml/manual/intro.xml: Add anchors to each DR.
867         * doc/html/*: Regenerate.
869 2017-07-10  Jonathan Wakely  <jwakely@redhat.com>
871         * testsuite/abi/pr42230.cc: Add header for std::free.
873         PR libstdc++/81381
874         * include/bits/sstream.tcc (basic_stringbuf::overflow)
875         (basic_stringbuf::basic_stringbuf(const __string_type&, ios::mode))
876         (basic_stringbuf::str()): Construct new strings with an allocator.
877         * testsuite/27_io/basic_stringbuf/cons/81381.cc: New.
879         PR libstdc++/81338
880         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string):
881         Declare basic_stringbuf to be a friend.
882         * include/bits/sstream.tcc (basic_stringbuf::overflow)
883         [_GLIBCXX_USE_CXX11_ABI]: Use unused capacity before reallocating.
884         * include/std/sstream (basic_stringbuf::__xfer_bufptrs): Update string
885         length to buffer length.
886         * testsuite/27_io/basic_stringstream/assign/81338.cc: New.
888 2017-07-06  Jonathan Wakely  <jwakely@redhat.com>
890         * testsuite/20_util/specialized_algorithms/memory_management_tools/
891         1.cc: Free memory.
892         * testsuite/22_locale/locale/cons/5.cc: Remove redundant restoration
893         of original environment and free memory.
895         * testsuite/abi/pr42230.cc: Free memory.
896         * testsuite/util/testsuite_abi.cc (demangle): Return std::string
897         instead of pointer that might need freeing.
898         * testsuite/util/testsuite_abi.h (demangle): Likewise.
899         * testsuite/util/testsuite_hooks.cc (verify_demangle): Free memory.
901         * include/bits/uses_allocator.h (__use_alloc(const _Alloc&&)): Add
902         deleted overload to prevent dangling references to rvalues.
903         * include/experimental/memory_resource
904         (polymorphic_allocator::construct): Do not call __use_alloc with
905         rvalue arguments.
907 2017-06-27  Tim Shen  <timshen@google.com>
909         PR libstdc++/80187
910         * include/std/variant (variant::variant, variant::~variant,
911         variant::operator=): Implement triviality forwarding for four
912         special member functions.
913         * testsuite/20_util/variant/compile.cc: Tests.
915 2017-06-27  Jonathan Wakely  <jwakely@redhat.com>
917         PR libstdc++/81221
918         * testsuite/25_algorithms/sample/81221.cc: Disable except for
919         check-parallel.
921         PR libstdc++/81221
922         * include/bits/stl_algo.h (sample): Qualify with _GLIBCXX_STD_A not
923         std.
924         * testsuite/25_algorithms/sample/81221.cc: New.
926 2017-06-22  Jonathan Wakely  <jwakely@redhat.com>
928         PR libstdc++/81173
929         * include/bits/stl_bvector.h (vector<bool>::_M_initialize_value):
930         Do not pass null pointer to memset.
932 2017-06-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
934         PR libstdc++/80675
935         PR libstdc++/80940
936         * include/std/istream:
937         (__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New.
938         (__do_is_convertible_to_basic_istream_impl): Likewise.
939         (__is_convertible_to_basic_istream_impl): Likewise.
940         (__is_convertible_to_basic_istream): Use the new base.
941         (__rvalue_istream_type): New.
942         (operator>>(_Istream&&, _Tp&&)): Use the new helper alias
943         for the SFINAE check, convert to the helper alias type before
944         doing the actual extraction.
945         * include/std/ostream:
946         (__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New.
947         (__do_is_convertible_to_basic_ostream_impl): Likewise.
948         (__is_convertible_to_basic_ostream_impl): Likewise.
949         (__is_convertible_to_basic_ostream): Use the new base.
950         (__rvalue_ostream_type): New.
951         (operator<<(_Ostream&&, const _Tp&)): Use the new helper alias
952         for the SFINAE check, convert to the helper alias type before
953         doing the actual insertion.
954         * testsuite/27_io/rvalue_streams-2.cc: Add new tests.
956 2017-06-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
958         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
960 2017-06-21  Jonathan Wakely  <jwakely@redhat.com>
962         PR libstdc++/81092
963         * configure: Regenerate.
965 2017-06-20  Uros Bizjak  <ubizjak@gmail.com>
967         * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
969 2017-06-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
971         * testsuite/20_util/variant/index_type.cc: Allow for all ilp32 and
972         lp64 targets.
974 2017-06-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
976         * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
977         * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
978         * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
979         * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
980         * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
981         * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
982         Likewise.
983         * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
984         * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
985         Likewise.
987 2017-06-18  H.J. Lu  <hongjiu.lu@intel.com>
989         PR libstdc++/81092
990         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
992 2017-06-18  Andreas Schwab  <schwab@linux-m68k.org>
994         PR libstdc++/81092
995         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
997 2017-06-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
999         * testsuite: Remove dg-skip-if, dg-xfail-if, dg-xfail-run-if
1000         default args.
1002 2017-06-17  Jonathan Wakely  <jwakely@redhat.com>
1004         PR libstdc++/80893
1005         * testsuite/23_containers/vector/bool/80893.cc: Add { target c++11 }.
1007 2017-06-16  Jonathan Wakely  <jwakely@redhat.com>
1009         * include/bits/shared_ptr.h (get_deleter): Add overload matching
1010         standard signature.
1011         * include/bits/shared_ptr_base.h (__shared_ptr): Declare new
1012         get_deleter overload as a friend.
1013         * testsuite/20_util/shared_ptr/misc/get_deleter.cc: New.
1015 2017-06-16  Jakub Jelinek  <jakub@redhat.com>
1017         PR libstdc++/81092
1018         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
1019         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
1020         * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
1022 2017-06-16  Jonathan Wakely  <jwakely@redhat.com>
1024         * include/bits/locale_conv.h (wbuffer_convert::sync): Fix condition.
1025         * testsuite/22_locale/conversions/buffer/2.cc: New.
1027         PR libstdc++/81092
1028         * acinclude.m4: Bump libtool_VERSION.
1029         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
1030         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
1031         * config/abi/pre/gnu.ver: Add wstring constructor symbols to
1032         GLIBCXX_3.4.24 version and move random_device::_M_get_entropy() symbol
1033         to new GLIBCXX_3.4.25 version.
1034         * doc/xml/manual/abi.xml: Document new versions.
1035         * doc/html/*: Regenerate.
1036         * testsuite/21_strings/basic_string/cons/char/8.cc: Use base object
1037         constructors to ensure required symbols are exported.
1038         * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
1039         * testsuite/util/testsuite_abi.cc: Add new version.
1041         * include/bits/locale_conv.h (wbuffer_convert::_M_put): Add missing
1042         return statement.
1043         * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
1044         Return void.
1045         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
1046         Likewise.
1047         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc: Add
1048         missing return statements.
1049         * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
1050         Likewise.
1051         * testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
1052         Return void.
1053         * testsuite/special_functions/14_expint/pr68397.cc: Likewise.
1055 2017-06-16  François Dumont  <fdumont@gcc.gnu.org>
1057         * include/bits/stl_bvector.h
1058         (__fill_bvector(_Bit_type*, unsigned int, unsigned int, bool)):
1059         Change signature.
1060         (std::fill(_Bit_iterator, _Bit_iterator, bool)): Adapt.
1061         (_Bvector_impl_data): New.
1062         (_Bvector_impl): Inherits from latter.
1063         (_Bvector_impl(_Bit_alloc_type&&)): Delete.
1064         (_Bvector_impl(_Bvector_impl&&)): New, default.
1065         (_Bvector_base()): Default.
1066         (_Bvector_base(_Bvector_base&&)): Default.
1067         (_Bvector_base::_M_move_data(_Bvector_base&&)): New.
1068         (vector(vector&&, const allocator_type&)): Use latter.
1069         (vector<bool>::operator=(vector&&)): Likewise.
1070         (vector<bool>::vector()): Default.
1071         (vector<bool>::vector(vector&&)): Default.
1072         (vector<bool>::assign(_InputIterator, _InputIterator)): Use
1073         _M_assign_aux.
1074         (vector<bool>::assign(initializer_list<bool>)): Likewise.
1075         (vector<bool>::_M_initialize_value(bool)): New.
1076         (vector<bool>(size_type, const bool&, const allocator_type&)): Use
1077         latter.
1078         (vector<bool>::_M_initialize_dispatch(_Integer, _Integer, __true_type)):
1079         Likewise.
1080         (vector<bool>::_M_fill_assign(size_t, bool)): Likewise.
1082 2017-06-15  François Dumont  <fdumont@gcc.gnu.org>
1084         * src/c++98/tree.cc  [!_GLIBCXX_INLINE_VERSION]
1085         (_Rb_tree_rotate_left, _Rb_tree_rotate_right): Delete.
1087 2017-06-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1089         * testsuite: Add dg-require-effective-target pthread to -pthread
1090         tests.
1091         Remove explicit target lists from dg-do and dg-options.
1093         * testsuite/30_threads/async/forced_unwind.cc: Remove explit
1094         target list from dg-options.
1095         * testsuite/30_threads/packaged_task/forced_unwind.cc: Likewise.
1097         * 30_threads/shared_mutex/cons/1.cc: Likewise.
1098         Pass -pthread for all targets.
1099         * 30_threads/shared_mutex/try_lock/1.cc: Likewise.
1100         * 30_threads/shared_mutex/try_lock/2.cc: Likewise.
1101         * 30_threads/shared_mutex/unlock/1.cc: Likewise.
1103         * testsuite/30_threads/this_thread/57060.cc: Require c++11 via
1104         dg-require-effective-target.
1106 2017-06-14  Jonathan Wakely  <jwakely@redhat.com>
1108         * doc/xml/manual/test.xml: Correct instructions on running tests.
1109         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Adjust to
1110         pass when -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS.
1111         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
1112         Likewise.
1113         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
1114         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
1115         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
1116         exceptions_failbit.cc: Likewise.
1117         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
1118         exceptions_failbit.cc: Likewise.
1119         * testsuite/27_io/basic_istream/extractors_other/char/
1120         exceptions_null.cc: Likewise.
1121         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
1122         exceptions_null.cc: Likewise.
1123         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
1124         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
1125         * testsuite/27_io/basic_ostream/inserters_other/char/
1126         exceptions_null.cc: Likewise.
1127         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
1128         exceptions_null.cc: Likewise.
1129         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
1131 2017-06-12  Pedro Alves  <palves@redhat.com>
1133         * doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr
1134         char_traits status.
1135         * doc/html/*: Regenerate.
1137         * include/bits/char_traits.h (_GLIBCXX_ALWAYS_INLINE): Define if
1138         not already defined.
1139         (__cpp_lib_constexpr_char_traits): Uncomment.
1140         (__constant_string_p, __constant_char_array_p): New.
1141         (std::char_traits<char>, std::char_traits<wchar_t>): Add
1142         _GLIBCXX17_CONSTEXPR on compare, length and find and use
1143         __constant_string_p, __constant_char_array_p and
1144         __builtin_constant_p to defer to __gnu_cxx::char_traits at compile
1145         time.
1147         * testsuite/21_strings/char_traits/requirements/
1148         constexpr_functions_c++17.cc: Uncomment
1149         __cpp_lib_constexpr_char_traits tests.  Uncomment
1150         test_compare<char>, test_length<char>, test_find<char>,
1151         test_compare<wchar_t>, test_length<wchar_t> and test_find<wchar_t>
1152         static_assert tests.
1154 2017-06-12  François Dumont  <fdumont@gcc.gnu.org>
1156         * include/bits/stl_tree.h (_Rb_tree_impl()): Restore _Node_allocator
1157         default init.
1158         * testsuite/util/testsuite_allocator.h
1159         (__gnu_test::default_init_allocator<>) New.
1160         * testsuite/23_containers/set/allocator/default_init.cc: New.
1161         * testsuite/23_containers/map/allocator/default_init.cc: New.
1163 2017-06-12  Jonathan Wakely  <jwakely@redhat.com>
1165         PR libstdc++/55917
1166         * src/c++11/thread.cc (execute_native_thread_routine): Remove
1167         try-block so that exceptions propagate out of the thread and terminate
1168         is called by the exception-handling runtime.
1169         (execute_native_thread_routine_compat): Likewise.
1170         * testsuite/30_threads/thread/cons/terminate.cc: New.
1172 2017-06-09  Jonathan Wakely  <jwakely@redhat.com>
1174         * doc/xml/manual/intro.xml: Document LWG 2802, 2873 and 2942 changes.
1175         * include/bits/shared_ptr.h (shared_ptr): Use rvalues for deleters
1176         (LWG 2802).
1177         * include/bits/shared_ptr_base.h (_Sp_ebo_helper, _Sp_counted_deleter
1178         (_Sp_counted_deleter::_Impl, __shared_count, __shared_ptr): Likewise.
1179         * testsuite/20_util/shared_ptr/cons/lwg2802.cc: New.
1181         * include/bits/forward_list.h (forward_list): Add deduction guide.
1182         * include/bits/stl_deque.h (deque): Likewise.
1183         * include/bits/stl_list.h (list): Likewise.
1184         * include/bits/stl_vector.h (vector): Likewise.
1185         * testsuite/23_containers/deque/cons/deduction.cc: New.
1186         * testsuite/23_containers/forward_list/cons/deduction.cc: New.
1187         * testsuite/23_containers/list/cons/deduction.cc: New.
1188         * testsuite/23_containers/vector/cons/deduction.cc: New.
1190 2017-06-08  Jonathan Wakely  <jwakely@redhat.com>
1192         PR libstdc++/81017
1193         * include/bits/std_function.h (function::function(function&&))
1194         (function::operator=(funtion&&)): Add noexcept.
1195         * testsuite/20_util/function/assign/move.cc: Check for noexcept.
1196         * testsuite/20_util/function/cons/move.cc: Likewise.
1198 2017-06-07  Jonathan Wakely  <jwakely@redhat.com>
1200         * include/bits/regex.h (basic_regex): Add deduction guide from P0433.
1201         * testsuite/28_regex/basic_regex/ctors/deduction.cc: New.
1203         PR libstdc++/81002
1204         * include/bits/regex.h (basic_regex): Adjust call to __compile_nfa
1205         so iterator type is deduced.
1206         * include/bits/regex_compiler.h (__compile_nfa): Reorder template
1207         parameters to allow iterator type to be deduced.
1208         * testsuite/28_regex/basic_regex/ctors/basic/iter.cc: New.
1210         * include/bits/alloc_traits.h (__is_allocator, _RequireAllocator):
1211         New trait and alias for detecting Allocator-like types.
1212         * include/bits/basic_string.h (basic_string): Add deduction guide
1213         from P0433.
1214         * include/ext/alloc_traits.h (__gnu_cxx::__alloc_traits): Add template
1215         parameter with default template argument that causes substitution
1216         failures for types that cannot be allocators.
1217         * testsuite/21_strings/basic_string/cons/char/deduction.cc: New.
1218         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: New.
1220 2017-06-02  Jonathan Wakely  <jwakely@redhat.com>
1222         PR libstdc++/80939
1223         * include/std/variant (__erased_ctor, __erased_assign, __erased_swap)
1224         (__erased_hash): Remove constexpr specifier and qualify calls to
1225         __ref_cast.
1226         (__erased_dtor): Remove constexpr specifier and use _Destroy.
1228 2017-06-05  Jonathan Wakely  <jwakely@redhat.com>
1230         * include/bits/stl_iterator_base_funcs.h
1231         (__advance<_RandomAccessIterator, _Distance>): Optimize for next/prev
1232         cases where incrementing or decrementing a single step.
1234         * include/bits/shared_ptr_base.h (__shared_ptr::owner_before)
1235         (__weak_ptr::owner_before, _Sp_owner_less::operator()): Add noexcept
1236         specifiers as per LWG 2873 and LWG 2942.
1237         * testsuite/20_util/owner_less/noexcept.cc: New.
1238         * testsuite/20_util/shared_ptr/observers/owner_before.cc: Test
1239         noexcept guarantees.
1240         * testsuite/20_util/weak_ptr/observers/owner_before.cc: Likewise.
1242 2017-06-03  Andreas Schwab  <schwab@linux-m68k.org>
1244         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
1246 2017-06-03  Eric Botcazou  <ebotcazou@adacore.com>
1248         * src/filesystem/dir.cc (fs::_Dir::advance): Use std::exchange.
1250 2017-06-02  Jonathan Wakely  <jwakely@redhat.com>
1252         PR libstdc++/80624
1253         * doc/xml/manual/status_cxx2011.xml: Document to_int_type behaviour.
1254         * include/bits/char_traits.h (char_traits<char16_t>::to_int_type):
1255         Transform eof value to U+FFFD.
1256         * testsuite/21_strings/char_traits/requirements/char16_t/eof.cc: New.
1257         * testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc: New.
1258         * testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc: New.
1260         * libsupc++/Makefile.am: Remove custom targets for files that need to
1261         be compiled as C++11 or C++14.
1262         * libsupc++/Makefile.in: Regenerate.
1263         * libsupc++/del_ops.cc: Use pragma to disable -Wsized-deallocation
1264         warnings.
1265         * libsupc++/del_opvs.cc: Likewise.
1267 2017-06-02  Richard Biener  <rguenther@suse.de>
1268         Markus Eisenmann  <meisenmann.lba@fh-salzburg.ac.at>
1270         PR libstdc++/80721
1271         * libsupc++/eh_alloc.cc (pool::free): Keep list properly
1272         sorted and add missing freelist item merging cases.
1274 2017-06-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1276         (GLIBCXX_CROSSCONFIG): Handle *-solaris* like *-linux* etc.
1277         Remove *-solaris* section.
1278         * configure: Regenerate.
1280 2017-05-31  Jonathan Wakely  <jwakely@redhat.com>
1282         PR libstdc++/80893
1283         * include/bits/stl_bvector.h (vector<bool>::_M_initialize): Avoid
1284         null pointer dereference when size is zero.
1285         * testsuite/23_containers/vector/bool/80893.cc: New.
1286         * testsuite/util/testsuite_allocator.h (PointerBase::PointerBase):
1287         Add non-explicit constructor from nullptr.
1288         (PointerBase::derived() const): Add const-qualified overload.
1290 2017-05-20  Tim Shen  <timshen@google.com>
1292         PR libstdc++/80737
1293         * include/std/variant(variant::variant): SFINAE on is_same first.
1294         * testsuite/20_util/variant/any.cc: test case.
1296 2017-05-24  Jonathan Wakely  <jwakely@redhat.com>
1298         * src/c++11/random.cc (random_device::_M_getentropy): Use __CHAR_BIT__
1299         instead of fixed number of bits.
1301 2017-05-24  Andreas Schwab  <schwab@suse.de>
1303         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
1304         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise.
1306 2017-05-23  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
1307             Jonathan Wakely  <jwakely@redhat.com>
1309         PR libstdc++/67578
1310         * acinclude.m4: Bump libtool_VERSION.
1311         * config/abi/pre/gnu.ver: Create GLIBCXX_3.4.24 with new symbol.
1312         * config.h.in: Regenerate.
1313         * configure: Regenerate.
1314         * configure.ac: Add test for <linux/random.h>.
1315         * doc/xml/manual/abi.xml: Document new library version.
1316         * include/bits/random.h (random_device::entropy)
1317         [_GLIBCXX_USE_RANDOM_TR1]: Add call to new _M_getentropy member.
1318         (random_device::_M_getentropy): Declare.
1319         * src/c++11/random.cc (random_device::_M_getentropy): Define.
1320         * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.24 to known
1321         versions, and make it the latest version.
1323 2017-05-23  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
1325         PR libstdc++/67214
1326         * include/bits/locale_facets.tcc (num_get::_M_extract_int): Add
1327         explicit conversion to avoid signed overflow.
1329 2017-05-19  Jonathan Wakely  <jwakely@redhat.com>
1331         PR libstdc++/80796
1332         * include/bits/stl_algo.h (search): Add new overload for C++17.
1333         * testsuite/25_algorithms/search/searcher.cc: New.
1335 2017-05-18  Jonathan Wakely  <jwakely@redhat.com>
1337         PR libstdc++/80478
1338         * include/std/functional (_Mem_fn_traits_base): Add specializations
1339         for noexcept member function types.
1340         * testsuite/20_util/function_objects/mem_fn/80478.cc: New test.
1342 2017-05-18  Jonathan Wakely  <jwakely@redhat.com>
1344         * doc/xml/manual/policy_data_structures.xml: Fix typo.
1345         * doc/xml/manual/test_policy_data_structures.xml: Likewise.
1346         * doc/html/*: Regenerate.
1348         * doc/xml/manual/abi.xml: Document latest library versions.
1349         * doc/xml/manual/build_hacking.xml: Document requirement to update
1350         abi.xml when bumping library versions.
1351         * doc/html/*: Regenerate.
1353 2017-05-17  Jonathan Wakely  <jwakely@redhat.com>
1355         * include/bits/refwrap.h: Fix Doxygen warning.
1356         * include/bits/specfun.h: Likewise.
1357         * include/bits/std_function.h: Likewise.
1358         * include/bits/stl_algo.h (set_union, set_intersection)
1359         (set_difference, set_symmetric_difference): Add Doxygen @param tags
1360         for output iterator parameters.
1361         * include/bits/stl_iterator.h (inserter): Add Doxygen @param tag for
1362         iterator parameter.
1363         * include/std/mutex (try_lock, lock): Change Mutex to Lockable in
1364         Doxygen comments.
1366 2017-05-17  Ville Voutilainen  <ville.voutilainen@gmail.com>
1368         Implement new C++ intrinsics __is_assignable and __is_constructible.
1369         * include/std/type_traits (__do_is_static_castable_impl): Remove.
1370         (__is_static_castable_impl, __is_static_castable_safe): Likewise.
1371         (__is_static_castable, __do_is_direct_constructible_impl): Likewise.
1372         (__is_direct_constructible_impl): Likewise.
1373         (__is_direct_constructible_new_safe): Likewise.
1374         (__is_base_to_derived_ref, __is_lvalue_to_rvalue_ref): Likewise.
1375         (__is_direct_constructible_ref_cast): Likewise.
1376         (__is_direct_constructible_new, __is_direct_constructible): Likewise.
1377         (__do_is_nary_constructible_impl): Likewise.
1378         (__is_nary_constructible_impl, __is_nary_constructible): Likewise.
1379         (__is_constructible_impl): Likewise.
1380         (is_constructible): Call the intrinsic.
1381         (__is_assignable_helper): Remove.
1382         (is_assignable): Call the intrinsic.
1383         (is_trivially_constructible): Likewise.
1384         (__is_trivially_copy_constructible_impl): New.
1385         (is_trivially_copy_constructible): Use it.
1386         (__is_trivially_move_constructible_impl): New.
1387         (is_trivially_move_constructible): Use it.
1388         (is_trivially_assignable): Call the intrinsic.
1389         (__is_trivially_copy_assignable_impl): New.
1390         (is_trivially_copy_assignable): Use it.
1391         (__is_trivially_move_assignable_impl): New.
1392         (is_trivially_move_assignable): Use it.
1393         (testsuite/20_util/declval/requirements/1_neg.cc): Adjust.
1394         (testsuite/20_util/is_trivially_copy_assignable/value.cc):
1395         Add test for void.
1396         (testsuite/20_util/is_trivially_copy_constructible/value.cc): Likewise.
1397         (testsuite/20_util/is_trivially_move_assignable/value.cc): Likewise.
1398         (testsuite/20_util/is_trivially_move_constructible/value.cc): Likewise.
1399         (testsuite/20_util/make_signed/requirements/typedefs_neg.cc): Adjust.
1400         (testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc):
1401         Likewise.
1403 2017-05-16  Jonathan Wakely  <jwakely@redhat.com>
1405         * testsuite/experimental/source_location/1.cc: Change expected result
1406         for source_location::current() used in default member initializer.
1408         * doc/xml/manual/status_cxx2017.xml: Update status table.
1409         * doc/html/*: Regenerate.
1410         * include/Makefile.am: Add new header.
1411         * include/Makefile.in: Regenerate.
1412         * include/experimental/source_location: New header implementing N4519.
1413         * testsuite/experimental/source_location/1.cc: New test.
1415         PR libstdc++/80285
1416         * include/bits/shared_ptr_base.h [!__cpp_rtti] (type_info): Declare
1417         outside versioned namespace.
1419         * configure: Regenerate.
1421 2017-05-16  Marc Glisse  <marc.glisse@inria.fr>
1423         * include/std/optional (_Optional_base::_M_get): Check precondition.
1424         * testsuite/20_util/optional/cons/value_neg.cc: Update line numbers.
1426 2017-05-16  Jonathan Wakely  <jwakely@redhat.com>
1428         * doc/xml/manual/appendix_contributing.xml: Link to test docs and
1429         note higher DejaGnu version requirement.
1430         * doc/html/*: Regenerate.
1432         * doc/xml/manual/appendix_contributing.xml: Link to the list of bad
1433         identifiers.
1434         * doc/html/*: Regenerate.
1436 2017-05-15  Jonathan Wakely  <jwakely@redhat.com>
1438         PR libstdc++/80761
1439         * include/bits/node_handle.h (_Node_insert_return): Reorder members.
1440         (tuple_size, tuple_element): Remove partial specializations.
1441         * include/bits/stl_tree.h (_Rb_tree::insert_return_type): Use
1442         const_iterator for std::set.
1443         * testsuite/23_containers/map/modifiers/extract.cc: New.
1444         * testsuite/23_containers/set/modifiers/extract.cc: New.
1445         * testsuite/23_containers/unordered_map/modifiers/extract.cc: New.
1446         * testsuite/23_containers/unordered_set/modifiers/extract.cc: New.
1448 2017-05-12  Jonathan Wakely  <jwakely@redhat.com>
1450         PR libstdc++/78939
1451         * include/std/utility (tuple_size<cv T>): Only define partial
1452         specializations when tuple_size<T>::value is valid.
1453         * testsuite/20_util/tuple/78939.cc: New.
1454         * testsuite/20_util/tuple/cv_tuple_size_neg.cc: New.
1456 2017-05-11  François Dumont  <fdumont@gcc.gnu.org>
1458         * include/bits/stl_tree.h [_GLIBCXX_INLINE_VERSION]
1459         (_Rb_tree_impl<>): Remove _Is_pod_comparator
1460         template parameter.
1462         * include/debug/formatter.h [_GLIBCXX_INLINE_VERSION]
1463         (__gnu_debug::_Error_formatter::_Parameter::_M_print_field): Remove.
1464         (__gnu_debug::_Error_formatter::_Parameter::_M_print_description):
1465         Remove.
1466         (__gnu_debug::_Error_formatter::_M_format_word): Remove.
1467         (__gnu_debug::_Error_formatter::_M_print_word): Remove.
1468         (__gnu_debug::_Error_formatter::_M_print_string): Remove.
1469         (__gnu_debug::_Error_formatter::_M_get_max_length): Remove.
1470         * src/c++11/debug.cc: Adapt.
1471         * config/abi/pre/gnu-versioned-namespace.ver: Adapt.
1473 2017-05-11  Jonathan Wakely  <jwakely@redhat.com>
1475         * doc/xml/manual/allocator.xml: Fix ViewCVS URLs.
1476         * doc/xml/manual/mt_allocator.xml: Likewise.
1477         * doc/html/*: Regenerate.
1479         PR libstdc++/80285
1480         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Define
1481         function to get unique fake std::type_info reference.
1482         (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Compare to
1483         _S_ti() fake reference.
1484         (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Share
1485         single implementation with or without RTTI enable.
1486         [!__cpp_rtti]: Pass fake reference to _M_get_deleter.
1487         * testsuite/20_util/shared_ptr/creation/alloc.cc: Change expected
1488         allocation and deallocation counts.
1489         * testsuite/20_util/shared_ptr/creation/single_allocation.cc: New.
1490         * testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc:
1491         New.
1493 2017-05-10  François Dumont  <fdumont@gcc.gnu.org>
1495         Bump version namespace.
1496         * config/abi/pre/gnu-versioned-namespace.ver: Bump version namespace
1497         from __7 to __8. Bump GLIBCXX_7.0 to GLIBCXX_8.0.
1498         * acinclude.m4 (libtool_VERSION): Bump to 8:0:0.
1499         * include/bits/c++config: Adapt.
1500         * include/bits/regex.h: Adapt.
1501         * include/experimental/bits/fs_fwd.h: Adapt.
1502         * include/experimental/bits/lfts_config.h: Adapt.
1503         * include/std/variant: Adapt.
1504         * python/libstdcxx/v6/printers.py: Adapt.
1505         * testsuite/libstdc++-prettyprinters/48362.cc: Adapt.
1507         * include/bits/stl_algobase.h (std::__iter_swap<false>): Remove
1508         _GLIBCXX_MOVE usage.
1510 2017-05-09  Jason Merrill  <jason@redhat.com>
1512         * testsuite/24_iterators/container_access.cc (test03): Make il3 static.
1514 2017-05-08  Jonathan Wakely  <jwakely@redhat.com>
1516         * include/std/optional: Use a separate static_assert per condition.
1517         * testsuite/20_util/optional/cons/value_neg.cc: Update dg-error line
1518         numbers.
1520         * doc/xml/manual/mt_allocator.xml: Clarify deallocation behaviour.
1521         * doc/html/*: Regenerate.
1523 2017-05-02  Hugo Beauzée-Luyssen <hugo@beauzee.fr>
1525         PR libstdc++/69506
1526         * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_WEAK_REF): Define.
1528 2017-04-29  François Dumont  <fdumont@gcc.gnu.org>
1530         * testsuite/libstdc++-prettyprinters/48362.cc: Replace a regexp-test
1531         by a note-test.
1533 2017-04-28  Jonathan Wakely  <jwakely@redhat.com>
1535         PR libstdc++/80553
1536         * include/bits/stl_construct.h (_Destroy, _Destroy_n): Add static
1537         assertions to ensure type is destructible.
1538         (destroy_at, destroy, destroy_n): Move from stl_uninitialized.h.
1539         * include/bits/stl_uninitialized.h (destroy_at, destroy, destroy_n):
1540         Move to stl_construct.h.
1541         * testsuite/20_util/specialized_algorithms/memory_management_tools/
1542         destroy_neg.cc: New test.
1543         * testsuite/23_containers/vector/cons/destructible_neg.cc: New test.
1545         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Remove
1546         superfluous "" in dg-error.
1548 2017-04-28  Tom de Vries  <tom@codesourcery.com>
1550         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Remove
1551         superfluous '{ target *-*-* }' in dg-(error|warning|message|bogus).
1553 2017-04-27  Jonathan Wakely  <jwakely@redhat.com>
1555         * include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
1556         (PB_DS_CLASS_C_DEC::end()): Remove redundant const in cast type.
1557         * testsuite/util/testsuite_rng.h (twister_rand_gen::get_prob()):
1558         Likewise.
1560 2017-04-26  Jonathan Wakely  <jwakely@redhat.com>
1562         * testsuite/23_containers/deque/allocator/move_assign-2.cc: Improve
1563         comment. Ensure first test works because allocator type propagates and
1564         not because is_always_equal is true.
1565         * testsuite/23_containers/vector/52591.cc: Likewise. Restore original
1566         testcase that instantiates the move-assignment operator.
1568 2017-04-24  Jonathan Wakely  <jwakely@redhat.com>
1570         PR libstdc++/80506
1571         * include/bits/random.tcc (gamma_distribution::operator()): Fix magic
1572         number used in loop condition.
1574         PR libstdc++/80504
1575         * include/bits/refwrap.h (ref, cref): Qualify calls.
1576         * testsuite/20_util/reference_wrapper/80504.cc: New test.
1578         PR libstdc++/80493
1579         * include/experimental/optional (optional::swap): Fix exception
1580         specification.
1582 2017-04-21  Jonathan Wakely  <jwakely@redhat.com>
1584         PR libstdc++/80316
1585         * include/std/future (_State_baseV2::_Setter::operator()): Remove
1586         _S_check calls that are done after the pointer to the shared state is
1587         already dereferenced.
1588         (_State_baseV2::_Setter<_Res, void>): Define specialization for void
1589         as partial specialization so it can be defined within the definition
1590         of _State_baseV2.
1591         (_State_baseV2::__setter): Call _S_check.
1592         (_State_baseV2::__setter(promise<void>*)): Add overload for use by
1593         promise<void>::set_value and promise<void>::set_value_at_thread_exit.
1594         (promise<T>, promise<T&>, promise<void>): Make _State a friend.
1595         (_State_baseV2::_Setter<void, void>): Remove explicit specialization.
1596         (promise<void>::set_value, promise<void>::set_value_at_thread_exit):
1597         Use new __setter overload.
1598         * testsuite/30_threads/promise/members/at_thread_exit2.cc: New test.
1599         * testsuite/30_threads/promise/members/set_exception.cc: Test
1600         promise<T&> and promise<void> specializations.
1601         * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
1602         Test for no_state error condition.
1603         * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
1605         * include/backward/auto_ptr.h: Ignore deprecated warnings from use
1606         of auto_ptr.
1607         * include/bits/shared_ptr.h: Likewise.
1608         * include/bits/shared_ptr_base.h: Likewise.
1609         * include/bits/unique_ptr.h: Likewise.
1610         * libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc: Adjust
1611         dg-error lineno.
1612         * libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc: Likewise.
1613         * libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc:
1614         Likewise.
1615         * libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc:
1616         Likewise.
1618 2017-04-20  Edward Smith-Rowland  <3dw4rd@verizon.net>
1620         PR libstdc++/68397 std::tr1::expint fails ... long double arguments.
1621         * include/tr1/exp_integral.tcc: Increase iteration limits.
1622         * testsuite/tr1/5_numerical_facilities/special_functions/15_expint/
1623         pr68397.cc: New test.
1624         * testsuite/special_functions/14_expint/pr68397.cc: New test.
1626 2017-04-20  Jonathan Wakely  <jwakely@redhat.com>
1628         PR libstdc++/79862
1629         * include/std/atomic [!_GLIBCXX_USE_C99_STDINT_TR1] (atomic_int8_t)
1630         (atomic_uint8_t, atomic_int16_t, atomic_uint16_t, atomic_int32_t,
1631         (atomic_uint32_t, atomic_int64_t, atomic_uint64_t)
1632         (atomic_int_least8_t, atomic_uint_least8_t, atomic_int_least16_t)
1633         (atomic_uint_least16_t, atomic_int_least32_t, atomic_uint_least32_t)
1634         (atomic_int_least64_t, atomic_uint_least64_t, atomic_int_fast8_t)
1635         (atomic_uint_fast8_t, atomic_int_fast16_t, atomic_uint_fast16_t)
1636         (atomic_int_fast32_t, atomic_uint_fast32_t, atomic_int_fast64_t)
1637         (atomic_uint_fast64_t, atomic_intmax_t, atomic_uintmax_t): Don't
1638         define.
1640 2017-04-19  Jonathan Wakely  <jwakely@redhat.com>
1642         * doc/xml/manual/abi.xml: Rephrase one of the references to the
1643         Itanium C++ ABI.
1644         * doc/xml/manual/test.xml: Document DejaGnu 1.5.3 requirement.
1645         * doc/html/*: Regenerate.
1647         * libsupc++/new: Update comment on #endif directive.
1649         PR libstdc++/80448
1650         * include/experimental/bits/fs_dir.h (directory_iterator)
1651         (recursive_directory_iterator): Remove noexcept from defaulted
1652         constructors.
1654         PR libstdc++/80446
1655         * include/std/type_traits (is_aggregate): Change __has_builtin checks.
1656         * libsupc++/new (launder): Likewise.
1658 2017-04-18  Jonathan Wakely  <jwakely@redhat.com>
1660         * include/std/functional (default_searcher, __boyer_moore_array_base)
1661         (__is_std_equal_to, __boyer_moore_base_t, boyer_moore_searcher)
1662         (boyer_moore_horspool_searcher): Remove redundant namespace
1663         qualification.
1664         (default_searcher::operator()): Construct return value early and
1665         advance second member in-place.
1666         (boyer_moore_horspool_searcher::operator()): Increment random access
1667         iterator directly instead of using std::next.
1668         (boyer_moore_searcher::operator()): Fix return value.
1669         * testsuite/20_util/function_objects/searchers.cc: Check both parts
1670         of return values.
1672 2017-04-12  Gerald Pfeifer  <gerald@pfeifer.com>
1674         * doc/xml/faq.xml: Update reference link to C++ ABI for Itanium.
1675         * doc/xml/manual/abi.xml. Ditto (thrice).
1677 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
1679         * doc/xml/manual/status_cxx2017.xml: Remove duplicate table entry.
1680         * doc/html/*: Regenerate.
1682         * testsuite/20_util/reference_wrapper/invoke.cc: Uncomment tests
1683         that no longer fail.
1685         * include/bits/ios_base.h: Correct comment.
1686         * testsuite/util/testsuite_hooks.h: Likewise.
1688         * doc/xml/manual/status_cxx2017.xml: Update C++17 status table.
1689         * doc/xml/manual/appendix_contributing.xml (contrib.organization): Add
1690         directories for debug, parallel and profile headers.
1691         * doc/html/*: Regenerate.
1693         * include/bits/char_traits.h (__gnu_cxx::char_traits): Add
1694         _GLIBCXX14_CONSTEXPR on assign, compare, find, and length.
1695         (std::char_traits<char>, std::char_traits<wchar_t>): Add
1696         _GLIBCXX17_CONSTEXPR on assign.
1697         (std::char_traits<char16_t>, std::char_traits<char32_t>): Add
1698         _GLIBCXX17_CONSTEXPR on assign, compare, find, and length.
1699         * testsuite/21_strings/char_traits/requirements/
1700         constexpr_functions_c++17.cc: New test.
1702 2017-04-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
1704         PR libstdc++/79141
1705         * include/bits/stl_pair.h (__nonesuch_no_braces): New.
1706         (operator=(typename conditional<
1707         __and_<is_copy_assignable<_T1>,
1708         is_copy_assignable<_T2>>::value,
1709         const pair&, const __nonesuch&>::type)): Change __nonesuch
1710         to __nonesuch_no_braces.
1711         (operator=(typename conditional<
1712         __not_<__and_<is_copy_assignable<_T1>,
1713         is_copy_assignable<_T2>>>::value,
1714         const pair&, const __nonesuch&>::type)): Likewise.
1715         (operator=(typename conditional<
1716         __and_<is_move_assignable<_T1>,
1717         is_move_assignable<_T2>>::value,
1718         pair&&, __nonesuch&&>::type)): Likewise.
1719         * testsuite/20_util/pair/79141.cc: New.
1721 2017-04-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
1723         Implement std::is_aggregate.
1724         * include/std/type_traits (is_aggregate, is_aggregate_v): New.
1725         * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
1726         New.
1727         * testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
1728         * testsuite/20_util/is_aggregate/value.cc: Likewise.
1730 2017-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
1732         Adjust optional's pretty printer for LWG 2900.
1733         * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter.__init__):
1734         Look at the nested payload in case of non-experimental optional.
1736 2017-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
1738         Implement LWG 2900, The copy and move constructors
1739         of optional are not constexpr.
1740         * include/std/optional (_Optional_payload): New.
1741         (_Optional_base): Remove the bool parameter.
1742         (_Optional_base<_Tp, false>): Remove.
1743         (_Optional_base()): Adjust.
1744         (_Optional_base(nullopt_t)): Likewise.
1745         (_Optional_base(in_place_t, _Args&&...)): Likewise.
1746         (_Optional_base(in_place_t, initializer_list<_Up>, _Args&&...)):
1747         Likewise.
1748         (_Optional_base(const _Optional_base&)): Likewise.
1749         (_Optional_base(_Optional_base&&)): Likewise.
1750         (operator=(const _Optional_base&)): Likewise.
1751         (operator=(_Optional_base&&)): Likewise.
1752         (~_Optional_base()): Remove.
1753         (_M_is_engaged()): Adjust.
1754         (_M_get()): Likewise.
1755         (_M_construct(_Args&&...)): Likewise.
1756         (_M_destruct()): Likewise.
1757         (_M_reset()): Likewise.
1758         (_Optional_base::_Empty_byte): Remove.
1759         (_Optional_base::_M_empty): Remove.
1760         (_Optional_base::_M_payload): Adjust.
1761         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
1762         * testsuite/20_util/optional/constexpr/cons/value.cc: Add tests.
1764 2017-03-28  Jonathan Wakely  <jwakely@redhat.com>
1766         PR libstdc++/80137
1767         * include/bits/random.tcc (generate_canonical): Use std::nextafter
1768         or numeric_limits::epsilon() to reduce out-of-range values.
1769         * testsuite/26_numerics/random/uniform_real_distribution/operators/
1770         64351.cc: Verify complexity requirement is met.
1772         * doc/xml/manual/abi.xml: Add xml:id anchor.
1773         * doc/xml/manual/using.xml (manual.intro.using.macros): Document
1774         _GLIBCXX_RELEASE. Link to new anchor for __GLIBCXX__ notes.
1775         (concurrency.io.structure): Add markup.
1776         * doc/html/*: Regenerate.
1778         PR libstdc++/80229
1779         * include/bits/shared_ptr_base.h
1780         (__shared_ptr::_M_enable_shared_from_this_with): Change parameters to
1781         non-const and then use remove_cv to get unqualified type.
1782         * testsuite/20_util/enable_shared_from_this/members/const.cc: Don't
1783         cast away constness on object created const.
1784         * testsuite/20_util/shared_ptr/cons/80229.cc: New test.
1786 2017-03-26  Markus Trippelsdorf  <markus@trippelsdorf.de>
1788         PR libstdc++/80183
1789         * include/bits/stl_tree.h:
1790         (_Rb_tree_header::_M_move_data(_Rb_tree_header&)): Also save _M_color.
1792 2017-03-23  Jonathan Wakely  <jwakely@redhat.com>
1794         * testsuite/23_containers/array/tuple_interface/
1795         tuple_element_debug_neg.cc: Adjust dg-error.
1796         * testsuite/23_containers/list/operations/78389.cc: Fix less-than to
1797         define a valid strict weak ordering.
1798         * testsuite/23_containers/priority_queue/67085.cc: Disable test for
1799         Debug Mode, due to debug checks making extra copies of predicate.
1800         * testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
1801         Likewise.
1803         * doc/xml/faq.xml: Add link.
1804         * doc/xml/manual/backwards_compatibility.xml: Remove outdated
1805         information on pre-ISO headers. Replace broken link to C++ FAQ Lite.
1806         * doc/xml/manual/io.xml: Update broken link.
1807         * doc/html/*: Regenerate.
1809 2017-03-23  Daniel Kruegler  <daniel.kruegler@gmail.com>
1811         Implement LWG 2686, Why is std::hash specialized for error_code,
1812         but not error_condition?
1813         * include/std/system_error (hash<error_condition>): Define for C++17.
1814         * testsuite/20_util/hash/operators/size_t.cc (hash<error_condition>):
1815         Instantiate test for error_condition.
1816         * testsuite/20_util/hash/requirements/explicit_instantiation.cc
1817         (hash<error_condition>): Instantiate hash<error_condition>.
1819         * include/bits/c++config (_GLIBCXX17_INLINE): Define.
1820         * include/bits/regex_constants.h (All std::regex_constants constants):
1821         Add _GLIBCXX17_INLINE as per P0607R0.
1822         * include/bits/std_mutex.h (defer_lock, try_to_lock, adopt_lock):
1823         Likewise.
1824         * include/bits/stl_pair.h (piecewise_construct): Likewise.
1825         * include/bits/uses_allocator.h (allocator_arg, uses_allocator_v)
1826         (__is_uses_allocator_constructible_v)
1827         (__is_nothrow_uses_allocator_constructible_v): Likewise.
1828         * include/std/chrono (treat_as_floating_point_v): Likewise.
1829         * include/std/functional (is_bind_expression_v, is_placeholder_v):
1830         Likewise.
1831         * include/std/optional (nullopt): Likewise.
1832         * include/std/ratio (ratio_equal_v, ratio_not_equal_v, ratio_less_v)
1833         ratio_less_equal_v, ratio_greater_v, ratio_greater_equal_v): Likewise.
1834         * include/std/system_error (is_error_code_enum_v)
1835         (is_error_condition_enum_v): Likewise.
1836         * include/std/tuple (tuple_size_v, ignore): Likewise.
1837         (ignore): Declare ignore constexpr as per LWG 2773, declare assignment
1838         constexpr as per LWG 2933.
1839         * include/std/type_traits (All variable templates): Add
1840         _GLIBCXX17_INLINE as per P0607R0.
1841         * include/std/variant (variant_size_v, variant_npos, __index_of_v)
1842         (__tuple_count_v, __exactly_once): Likewise.
1843         * testsuite/18_support/headers/new/synopsis.cc
1844         (hardware_destructive_interference_size)
1845         (hardware_constructive_interference_size): Likewise for commented-out
1846         variables.
1847         * testsuite/20_util/tuple/creation_functions/constexpr.cc: Add new
1848         test function for constexpr std::ignore (LWG 2773).
1849         * testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc: New
1850         test for LWG 2933.
1852 2017-03-22  Jonathan Wakely  <jwakely@redhat.com>
1854         * include/bits/shared_ptr.h (shared_ptr, weak_ptr): Add deduction
1855         guides for C++17.
1856         * include/bits/std_function.h (function): Likewise.
1857         * include/bits/stl_pair.h (pair): Likewise.
1858         * include/debug/array (__gnu_debug::array): Likewise.
1859         * include/std/array (array): Likewise.
1860         * include/std/functional (make_default_searcher)
1861         (make_boyer_moore_searcher, make_boyer_moore_horspool_searcher):
1862         Remove generator functions.
1863         * include/std/tuple (tuple): Add deduction guides.
1864         * include/std/valarray (valarray): Likewise.
1865         * testsuite/20_util/function_objects/searchers.cc: Adjust to use
1866         class template argument deduction instead of generator functions.
1867         * testsuite/20_util/function/cons/deduction.cc: New test.
1868         * testsuite/20_util/optional/cons/deduction_guide.cc: Rename to ...
1869         * testsuite/20_util/optional/cons/deduction.cc: ... here.
1870         * testsuite/20_util/pair/cons/deduction.cc: New test.
1871         * testsuite/20_util/shared_ptr/cons/deduction.cc: New test.
1872         * testsuite/20_util/tuple/cons/deduction.cc: New test.
1873         * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust dg-error.
1874         * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: New test.
1875         * testsuite/20_util/weak_ptr/cons/deduction.cc: New test.
1876         * testsuite/23_containers/array/cons/deduction.cc: New test.
1877         * testsuite/23_containers/array/cons/deduction_neg.cc: New test.
1878         * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
1879         Adjust dg-error.
1880         * testsuite/23_containers/array/tuple_interface/get_neg.cc: Likewise.
1881         * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
1882         Likewise.
1883         * testsuite/26_numerics/valarray/deduction.cc: New test.
1884         * testsuite/30_threads/lock_guard/cons/deduction.cc: New test.
1885         * testsuite/30_threads/scoped_lock/cons/deduction.cc: New test.
1886         * testsuite/30_threads/unique_lock/cons/deduction.cc: New test.
1888 2017-03-20  François Dumont  <fdumont@gcc.gnu.org>
1890         * include/bits/stl_deque.h (deque): Access allocator value_type only if
1891         concept checks are enabled.
1892         * include/bits/stl_stack.h (stack): Likewise.
1893         * include/bits/stl_vector.h (vector): Likewise.
1894         * include/bits/stl_list.h (list): Likewise and check
1895         _SGIAssignableConcept only in C++03.
1896         * include/bits/stl_map.h (map): Likewise.
1897         * include/bits/stl_set.h (set): Likewise.
1898         * include/bits/stl_multimap.h (multimap): Likewise.
1899         * include/bits/stl_multiset.h (multiset): Likewise.
1900         * include/bits/stl_queue.h (queue, priority_queue): Likewise.
1902 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
1904         * doc/xml/manual/appendix_contributing.xml: Convert link to
1905         ansi.org to https.
1906         Update link to the C++ standard at ansi.org.
1908         * doc/xml/faq.xml: Remove information redundant with the above;
1909         instead add a reference.
1911 2017-03-17  Jonathan Wakely  <jwakely@redhat.com>
1913         * src/c++11/codecvt.cc (range): Add non-type template parameter and
1914         define oerloaded operators for reading and writing code units.
1915         (range<Elem, false>): Define partial specialization for accessing
1916         wide characters in potentially unaligned byte ranges.
1917         (ucs2_span(const char16_t*, const char16_t*, ...))
1918         (ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
1919         to range<const char16_t, false> in order to avoid unaligned reads.
1920         (__codecvt_utf16_base<char16_t>::do_out)
1921         (__codecvt_utf16_base<char32_t>::do_out)
1922         (__codecvt_utf16_base<wchar_t>::do_out): Use range specialization for
1923         unaligned data to avoid unaligned writes.
1924         (__codecvt_utf16_base<char16_t>::do_in)
1925         (__codecvt_utf16_base<char32_t>::do_in)
1926         (__codecvt_utf16_base<wchar_t>::do_in): Likewise for writes. Return
1927         error if there are unprocessable trailing bytes.
1928         (__codecvt_utf16_base<char16_t>::do_length)
1929         (__codecvt_utf16_base<char32_t>::do_length)
1930         (__codecvt_utf16_base<wchar_t>::do_length): Pass arguments of type
1931         range<const char16_t, false> to span functions.
1932         * testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.
1934 2017-03-16  Jonathan Wakely  <jwakely@redhat.com>
1936         PR libstdc++/79980
1937         * src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.
1939         PR libstdc++/80041
1940         * src/c++11/codecvt.cc (__codecvt_utf16_base<wchar_t>::do_out)
1941         (__codecvt_utf16_base<wchar_t>::do_in): Convert char arguments to
1942         char16_t to work with UTF-16 instead of UTF-8.
1943         * testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.
1945         * src/c++11/codecvt.cc (codecvt<char16_t, char, mbstate_t>)
1946         (codecvt<char32_t, char, mbstate_t>, __codecvt_utf8_base<char16_t>)
1947         (__codecvt_utf8_base<char32_t>, __codecvt_utf8_base<wchar_t>)
1948         (__codecvt_utf16_base<char16_t>, __codecvt_utf16_base<char32_t>)
1949         (__codecvt_utf16_base<wchar_t>, __codecvt_utf8_utf16_base<char16_t>)
1950         (__codecvt_utf8_utf16_base<char32_t>)
1951         (__codecvt_utf8_utf16_base<wchar_t>): Fix do_encoding() and
1952         do_max_length() return values.
1953         * testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
1954         * testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
1955         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.
1957         PR libstdc++/79980
1958         * include/bits/locale_conv.h (__do_str_codecvt): Set __count on
1959         error path.
1960         * src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
1961         for manipulating codecvt_mode values.
1962         (read_utf16_bom): Compare input to BOM constants instead of integral
1963         constants that depend on endianness.  Take mode parameter by
1964         reference and adjust it, to distinguish between no BOM present and
1965         UTF-16BE BOM present.
1966         (ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
1967         (surrogates): New enumeration type.
1968         (utf16_in, utf16_out): Add surrogates parameter to choose between
1969         UTF-16 and UCS2 behaviour.
1970         (utf16_span, ucs2_span): Use std::min not std::max.
1971         (ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
1972         (ucs2_in): Likewise. Adjust calls to read_utf16_bom.
1973         * testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
1974         * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.
1976         PR libstdc++/79511
1977         * src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0xffff
1978         as a surrogate pair.
1979         (__codecvt_utf8_utf16_base<char32_t>::do_in): Use native endianness
1980         for internal representation.
1981         (__codecvt_utf8_utf16_base<wchar_t>::do_in): Likewise.
1982         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.
1984         PR libstdc++/80064
1985         * include/bits/stl_heap.h (__is_heap, push_heap, __adjust_heap)
1986         (pop_heap, make_heap, sort_heap, is_heap_until, is_heap): Cope with
1987         invalid instantiations using function types for _Compare argument.
1988         * testsuite/25_algorithms/make_heap/80064.cc: New test.
1990         PR libstdc++/67440
1991         * python/libstdcxx/v6/printers.py (find_type): Avoid gdb.Type.name
1992         for GDB 7.6 compatibility, use gdb.Type.unqualified instead.
1994 2017-03-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
1996         Implement LWG 2857, {variant,optional,any}::emplace should
1997         return the constructed value.
1998         * include/std/any (emplace(_Args&&...)): Change the return type and
1999         return a reference to the constructed value.
2000         (emplace(initializer_list<_Up>, _Args&&...)): Likewise.
2001         * include/std/optional (emplace(_Args&&...)): Likewise.
2002         (emplace(initializer_list<_Up>, _Args&&...)): Likewise.
2003         * include/std/variant (emplace<_Tp>(_Args&&...)): Likewise.
2004         (emplace<_Tp>(initializer_list<_Up>, _Args&&...)): Likewise.
2005         (emplace<_Np>(_Args&&...)): Likewise.
2006         (emplace<_Np>(initializer_list<_Up>, _Args&&...)): Likewise.
2007         * testsuite/20_util/any/assign/emplace.cc: Add tests for
2008         checking the return value of emplace.
2009         * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.
2010         * testsuite/20_util/optional/assignment/6.cc: Add tests for
2011         checking the return value of emplace.
2012         * testsuite/20_util/variant/run.cc: Likewise.
2014 2017-03-15  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
2016         PR libstdc++/62045
2017         * include/ext/pb_ds/qdetail/binary_heap_/binary_heap_.hpp
2018         (is_heap): Remove.
2019         (push_heap): Remove the wrong checking using is_heap.
2020         (make_heap): Remove the assertion using is_heap.
2021         * include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
2022         (modify): Ditto.
2023         (resize_for_insert_if_needed): Add PB_DS_ASSERT_VALID after
2024         calling make_heap.
2026 2017-03-15  Jonathan Wakely  <jwakely@redhat.com>
2028         PR libstdc++/62045
2029         * testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
2030         New test.
2031         * testsuite/ext/pb_ds/regression/priority_queues.cc: Fix copy&paste
2032         error in comment.
2034 2017-03-15  Jonathan Wakely  <jwakely@redhat.com>
2036         * acinclude.m4 (GLIBCXX_CHECK_S_ISREG_OR_S_IFREG): Fix typo in
2037         comment.
2038         * config.h.in: Regenerate.
2039         * configure: Regenerate.
2040         * doc/Makefile.in: Regenerate.
2042 2017-03-14  Jonathan Wakely  <jwakely@redhat.com>
2044         PR libstdc++/79162
2045         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
2046         (basic_string<C,T,A>::operator=(basic_string_view<C,T>)): Replace
2047         with a constrained template.
2048         [!_GLIBCXX_USE_CXX11_ABI]
2049         (basic_string<C,T,A>::operator=(basic_string_view<C,T>)): Likewise.
2050         * testsuite/21_strings/basic_string/cons/char/79162.cc: New test.
2051         * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: New test.
2053 2017-03-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
2055         PR libstdc++/80034
2056         * include/bits/list.tcc (merge(list&&)): Use const for the size_t
2057         in the catch-block.
2058         (merge(list&&, _StrictWeakOrdering)): Likewise.
2059         * testsuite/23_containers/list/operations/80034.cc: New.
2061 2017-03-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
2063         Implement LWG 2806, Base class of bad_optional_access.
2064         * include/std/optional (bad_optional_access):
2065         Derive from std::exception.
2066         (bad_optional_access::bad_optional_access): Adjust.
2067         (bad_optional_access::what): New.
2068         (__throw_bad_optional_access(const char*)):
2069         Remove the parameter and adjust calls.
2070         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
2071         * testsuite/20_util/optional/typedefs.cc: Likewise.
2073 2017-03-12  Ville Voutilainen  <ville.voutilainen@gmail.com>
2075         Implement LWG 2934, optional<const T> doesn't compare with T.
2076         * include/std/optional
2077         (operator==(const optional<_Tp>&, const optional<_Tp>&)):
2078         Turn into operator==(const optional<_Tp>&, const optional<_Up>&).
2079         (operator!=(const optional<_Tp>&, const optional<_Tp>&)):
2080         Turn into operator!=(const optional<_Tp>&, const optional<_Up>&).
2081         (operator<(const optional<_Tp>&, const optional<_Tp>&)):
2082         Turn into operator<(const optional<_Tp>&, const optional<_Up>&.
2083         (operator>(const optional<_Tp>&, const optional<_Tp>&)):
2084         Turn into operator>(const optional<_Tp>&, const optional<_Up>&.
2085         (operator<=(const optional<_Tp>&, const optional<_Tp>&)):
2086         Turn into operator<=(const optional<_Tp>&, const optional<_Up>&).
2087         (operator>=(const optional<_Tp>&, const optional<_Tp>&)):
2088         Turn into operator>=(const optional<_Tp>&, const optional<_Up>&).
2089         (operator==(const optional<_Tp>&, const _Tp&)):
2090         Turn into operator==(const optional<_Tp>&, const _Up&).
2091         (operator==(const _Tp&, const optional<_Tp>&)):
2092         Turn into operator==(const _Up&, const optional<_Tp>&).
2093         (operator!=(const optional<_Tp>&, const _Tp&)):
2094         Turn into operator!=(const optional<_Tp>&, const _Up&).
2095         (operator!=(const _Tp&, const optional<_Tp>&)):
2096         Turn into operator!=(const _Up&, const optional<_Tp>&).
2097         (operator<(const optional<_Tp>&, const _Tp&)):
2098         Turn into operator<(const optional<_Tp>&, const _Up&).
2099         (operator<(const _Tp&, const optional<_Tp>&)):
2100         Turn into operator<(const _Up&, const optional<_Tp>&).
2101         (operator>(const optional<_Tp>&, const _Tp&)):
2102         Turn into operator>(const optional<_Tp>&, const _Up&).
2103         (operator>(const _Tp&, const optional<_Tp>&)):
2104         Turn into operator>(const _Up&, const optional<_Tp>&).
2105         (operator<=(const optional<_Tp>&, const _Tp&)):
2106         Turn into operator<=(const optional<_Tp>&, const _Up&).
2107         (operator<=(const _Tp&, const optional<_Tp>&)):
2108         Turn into operator<=(const _Up&, const optional<_Tp>&).
2109         (operator>=(const optional<_Tp>&, const _Tp&)):
2110         Turn into operator>=(const optional<_Tp>&, const _Up&).
2111         (operator>=(const _Tp&, const optional<_Tp>&)):
2112         Turn into operator>=(const _Up&, const optional<_Tp>&).
2113         * testsuite/20_util/optional/relops/7.cc: New.
2115 2017-03-10  Jonathan Wakely  <jwakely@redhat.com>
2117         * testsuite/17_intro/names.cc: Undefine macros that clash with
2118         identifiers in AIX system headers.
2120         * include/bits/invoke.h (__invoke): Use __invoke_result instead of
2121         result_of, and __is_nothrow_invocable instead of
2122         __is_nothrow_callable.
2123         * include/bits/shared_ptr_base.h (__shared_ptr): Use __is_invocable
2124         instead of __is_callable.
2125         * include/std/functional (invoke): use invoke_result_t instead of
2126         result_of_t and is_nothrow_invocable instead of is_nothrow_callable.
2127         (_Not_fn): Use __invoke_result instead of result_of.
2128         * include/std/type_traits (__result_of_memobj, __result_of_memfun):
2129         Remove partial specializations for reference_wrapper types.
2130         (__result_of_impl): Use __inv_unwrap to strip reference_wrapper.
2131         (__invoke_result): Define replacement for result_of and then use it to
2132         define result_of.
2133         (__is_callable_impl, __is_callable, __is_nothrow_callable): Replace
2134         with __is_invocable_impl, __is_invocable, and __is_nothrow_invocable
2135         respectively.
2136         (invoke_result, invoke_result_t): Define for C++17.
2137         (is_callable, is_nothrow_callable): Replace with is_invocable,
2138         is_invocable_r, is_nothrow_invocable, and is_nothrow_invocable_r.
2139         (is_callable_v, is_nothrow_callable_v): Replace with is_invocable_v,
2140         is_invocable_r_v, is_nothrow_invocable_v, and is_nothrow_invocable_r_v.
2141         * include/std/variant (hash<variant<T...>>): Use is_nothrow_invocable_v
2142         instead of is_nothrow_callable_v.
2143         * testsuite/20_util/function_objects/invoke/59768.cc: Remove unused
2144         main function.
2145         * testsuite/20_util/function_objects/not_fn/1.cc: Use is_invocable
2146         instead of is_callable.
2147         * testsuite/20_util/is_callable/*: Rename directory and adjust tests
2148         to use new traits.
2149         * testsuite/20_util/is_nothrow_callable/*: Likewise.
2150         * testsuite/20_util/optional/hash.cc: Use is_invocable_v instead of
2151         is_callable.
2152         * testsuite/20_util/variant/hash.cc: Likewise.
2154 2017-03-10  George Lander  <george.lander@arm.com>
2156         * acinclude.m4 (glibcxx_cv_obsolete_isnan): Define
2157         _GLIBCXX_INCLUDE_NEXT_C_HEADERS before including math.h.
2158         * configure: Regenerate.
2160 2017-03-09  Jonathan Wakely  <jwakely@redhat.com>
2162         * include/std/functional (_Not_fn): Define macro to simplify
2163         repetitive function definitions.
2165         * doc/xml/manual/status_cxx2017.xml: Document std::byte support.
2166         * include/c_global/cstddef (std::byte): Define for C++17.
2167         * testsuite/18_support/byte/global_neg.cc: New test.
2168         * testsuite/18_support/byte/ops.cc: New test.
2169         * testsuite/18_support/byte/requirements.cc: New test.
2171 2017-03-05  Jonathan Wakely  <jwakely@redhat.com>
2173         * doc/xml/manual/status_cxx2017.xml: Document P0156R2 status.
2174         * doc/html/*: Regenerate.
2175         * include/std/mutex (scoped_lock): Implement new C++17 template.
2176         * testsuite/30_threads/scoped_lock/cons/1.cc: New test.
2177         * testsuite/30_threads/scoped_lock/requirements/
2178         explicit_instantiation.cc: New test.
2179         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: New test.
2181 2017-03-02  Gerald Pfeifer  <gerald@pfeifer.com>
2182             François Dumont  <frs.dumont@gmail.com>
2183             Jonathan Wakely  <jwakely@redhat.com>
2185         * doc/xml/manual/debug_mode.xml: Update and simplify note
2186         on link- and run-time coexistence.
2188 2017-03-02  Jonathan Wakely  <jwakely@redhat.com>
2190         * testsuite/17_intro/headers/names.cc: Rename to ...
2191         * testsuite/17_intro/names.cc: ... here.
2193         PR libstdc++/79789
2194         * include/bits/hashtable_policy.h (__clp2): Use reserved names for
2195         parameters and local variables.
2196         * include/bits/ios_base.h (make_error_code, make_error_condition):
2197         Likewise.
2198         * include/bits/list.tcc (list::sort): Likewise.
2199         * include/bits/mask_array.h (mask_array): Likewise.
2200         * include/bits/regex.h (regex_token_iterator): Likewise.
2201         * include/bits/slice_array.h (slice_array): Likewise.
2202         * include/bits/stl_algo.h (__sample): Likewise.
2203         * include/std/memory (undeclare_no_pointers): Likewise.
2204         * include/std/type_traits (is_callable_v, is_nothrow_callable_v):
2205         Likewise.
2206         * libsupc++/exception_ptr.h (__dest_thunk): Likewise.
2207         * testsuite/17_intro/headers/names.cc: New test.
2209         PR libstdc++/79798
2210         * include/std/functional (bind::_Res_type_impl): Fix incorrect use of
2211         result_of that loses top-level cv-qualifiers.
2212         * testsuite/20_util/bind/79798.cc: New test.
2214 2017-03-01  Gerald Pfeifer  <gerald@pfeifer.com>
2216         * doc/xml/manual/documentation_hacking.xml: Tweak link to
2217         doxygen.org.
2219 2017-02-23  Jonathan Wakely  <jwakely@redhat.com>
2221         * include/experimental/iterator: Include <iterator>.
2222         * testsuite/experimental/iterator/requirements.cc: Check for contents
2223         of <iterator>.
2225 2017-02-19  Dinka Ranns  <dinka.ranns@googlemail.com>
2227         C++17 GB50 resolution
2228         * include/std/chrono (duration::operator++()): Add
2229         _GLIBCXX17_CONSTEXPR.
2230         (duration::operator++(int)): Likewise.
2231         (duration::operator--()): Likewise.
2232         (duration::operator--(int)): Likewise.
2233         (duration::operator+=(const duration&)): Likewise.
2234         (duration::operator-=(const duration&)): Likewise.
2235         (duration::operator*=(const rep&)): Likewise.
2236         (duration::operator/=(const rep&)): Likewise.
2237         (duration::operator%=(const rep&)): Likewise.
2238         (duration::operator%=(const duration&)): Likewise.
2239         (time_point::operator+=(const duration&)): Likewise.
2240         (time_point::operator-=(const duration&)): Likewise.
2241         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: New test.
2242         * testsuite/20_util/duration/literals/range.cc: Adjust dg-error.
2243         * testsuite/20_util/time_point/arithmetic/constexpr.cc: New test.
2245 2017-02-19  Gerald Pfeifer  <gerald@pfeifer.com>
2247         * doc/xml/manual/debug.xml: Adjust link to ThreadSanitizer.
2249 2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
2251         * doc/xml/manual/io.xml: Update link to groups.google.com.
2252         Tweak link description.
2254 2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
2256         * doc/xml/manual/profile_mode.xml: Fix link.
2258 2017-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
2260         * doc/xml/manual/policy_data_structures.xml: Simplify and
2261         standardize references to boost.org.
2262         * doc/xml/manual/policy_data_structures_biblio.xml: Ditto.
2263         * doc/xml/manual/shared_ptr.xml: Ditto.
2265 2017-02-16  Jonathan Wakely  <jwakely@redhat.com>
2267         PR libstdc++/60936
2268         * src/c++11/snprintf_lite.cc (__concat_size_t): Calculate length
2269         written to buffer, not length remaining in buffer.
2271 2017-02-15  Tim Shen  <timshen@google.com>
2273         PR libstdc++/78723
2274         * include/std/variant (operator<(), operator>(), operator<=(),
2275         operator>=(), operator==(), operator!=()): Implement P0393R3.
2276         * testsuite/20_util/variant/compile.cc: Adjust tests.
2277         * testsuite/20_util/variant/run.cc: Adjust tests.
2279 2017-02-15  Tim Shen  <timshen@google.com>
2281         PR libstdc++/79513
2282         * include/std/variant (visit()): Forward variant types to the return
2283         type detection code.
2284         * testsuite/20_util/variant/compile.cc: Add test cases.
2286 2017-02-13  H.J. Lu  <hongjiu.lu@intel.com>
2288         PR libstdc++/79348
2289         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
2291 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
2293         PR libstdc++/79348
2294         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
2295         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
2296         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise.
2297         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
2298         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Likewise.
2299         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
2300         * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Likewise.
2301         * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise.
2302         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
2304 2017-02-13  Jonathan Wakely  <jwakely@redhat.com>
2306         PR libstdc++/79486
2307         * include/std/future (__future_base::_Task_state::_M_run)
2308         (__future_base::_Task_state::_M_run_delayed): Use lvalue types in
2309         result_of expressions.
2310         * testsuite/30_threads/packaged_task/79486.cc: New.
2312 2017-02-11  Jonathan Wakely  <jwakely@redhat.com>
2314         PR libstdc++/79467
2315         * include/bits/shared_ptr_base.h (__shared_ptr(_Yp*, _Deleter))
2316         (__shared_ptr(_Yp*, _Deleter, _Alloc)): Use lvalue types in
2317         __is_callable check.
2318         * testsuite/20_util/shared_ptr/cons/79467.cc: New.
2320         * include/bits/atomic_base.h: Re-indent.
2322 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
2324         * doc/xml/manual/profile_mode.xml: Update a paper reference.
2326 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
2328         * src/c++11/snprintf_lite.cc (__err): Use https for bug reporting.
2330 2017-02-08  Jonathan Wakely  <jwakely@redhat.com>
2332         * doc/xml/manual/policy_data_structures.xml: Fix spelling of author's
2333         name.
2334         * doc/xml/manual/policy_data_structures_biblio.xml: Likewise. Remove
2335         broken links to texts that are no longer online.
2336         * doc/xml/manual/profile_mode.xml: Update links to CGO 2009 paper and
2337         LCPC 2006 paper.
2338         * doc/xml/manual/using.xml: Update links to memory model information.
2339         * doc/xml/manual/using_exceptions.xml: Update link to "Appendix E:
2340         Standard-Library Exception Safety".
2341         * doc/html/*: Regenerate.
2343 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
2345         * doc/xml/manual/profile_mode.xml: Unbreak link to
2346         "Optimizing Sorting with Machine Learning Algorithms".
2348 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
2350         * src/c++11/snprintf_lite.cc (__err): Update bug reporting URL.
2352 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
2354         * doc/xml/manual/abi.xml: Update link to "Sun Studio 11: C++
2355         Migration Guide".
2357 2017-02-07  Gerald Pfeifer  <gerald@pfeifer.com>
2359         * doc/html/ext/lwg-active.html: Remove.
2360         * doc/html/ext/lwg-closed.html: Ditto.
2361         * doc/html/ext/lwg-defects.html: Ditto.
2363         * doc/Makefile.am (xml_extradir): Remove.
2364         (xml_extra): Ditto.
2365         (stamp-html-docbook-lwg): Remove recipe...
2366         (stamp-html-docbook-data): ...and its use here.
2367         * doc/Makefile.in: Regenerate.
2369         * doc/xml/manual/intro.xml: Shorten two paragraphs explaining
2370         the relationship to the upstream working group.
2371         Replace a local link to ../ext/lwg-active.html by the upstream one.
2372         Replace all reference to ../ext/lwg-defects.html by a new entity
2373         &DR; which refers to the upstream address.
2375 2017-02-07  Gerald Pfeifer  <gerald@pfeifer.com>
2377         * doc/xml/manual/status_cxx2017.xml: Fix link to N4284.
2379 2017-02-06  Jonathan Wakely  <jwakely@redhat.com>
2381         PR libstdc++/79323
2382         * testsuite/20_util/duration/literals/range.cc: Prune extra output
2383         at -O0.
2385 2017-02-06  Gerald Pfeifer  <gerald@pfeifer.com>
2387         * doc/xml/manual/documentation_hacking.xml: Update URL of the
2388         DocBook Element Reference.  Use that term as link description
2389         instead of "online".
2390         epubcheck has moved to GitHub.
2391         Remove obsolete link to DocBook Publishing Tools.
2393 2017-02-03  Jonathan Wakely  <jwakely@redhat.com>
2395         PR libstdc++/66145
2396         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Restore ABI override
2397         so new ios::failure can be caught even when old ABI is the default.
2398         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
2399         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
2400         exceptions_failbit.cc: Likewise.
2401         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
2402         exceptions_failbit.cc: Likewise.
2403         * testsuite/27_io/basic_istream/extractors_other/char/
2404         exceptions_null.cc: Likewise.
2405         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
2406         exceptions_null.cc: Likewise.
2407         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
2408         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
2409         * testsuite/27_io/basic_ostream/inserters_other/char/
2410         exceptions_null.cc: Likewise.
2411         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
2412         exceptions_null.cc: Likewise.
2413         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
2415         PR libstdc++/60936
2416         * src/c++11/Makefile.am: Add new files.
2417         * src/c++11/Makefile.in: Regenerate.
2418         * src/c++11/cow-string-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
2419         (operator<<, operator>>, getline): Move explicit instantiations to ...
2420         * src/c++11/cow-string-io-inst.cc: ... new file.
2421         * src/c++11/cow-wstring-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
2422         (operator<<, operator>>, getline): Move explicit instantiations to ...
2423         * src/c++11/cow-wstring-io-inst.cc: ... new file.
2424         * src/c++11/functexcept.cc (__throw_ios_failure, __throw_system_error)
2425         (__throw_future_error, __throw_bad_function_call):
2426         (__throw_regex_error): Move functions for C++11 exceptions to the
2427         files that define the exception types.
2428         * src/c++11/functional.cc (__throw_bad_function_call): Move here.
2429         * src/c++11/future.cc (__throw_future_error): Likewise.
2430         * src/c++11/ios.cc (__throw_ios_failure): Likewise.
2431         * src/c++11/regex.cc (__throw_regex_error): Likewise.
2432         * src/c++11/snprintf_lite.cc (__concat_size_t): Print decimal
2433         representation directly instead of calling __int_to_char.
2434         * src/c++11/sso_string.cc (__sso_string): New file for definition
2435         of __sso_string type.
2436         * src/c++11/string-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
2437         explicit instantiations of narrow string I/O functions.
2438         * src/c++11/system_error.cc (__throw_system_error): Move here.
2439         (__sso_string): Move to new file.
2440         * src/c++11/wstring-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
2441         explicit instantiations of wide string I/O functions.
2442         * src/c++98/misc-inst.cc [_GLIBCXX_USE_CXX11_ABI] (operator<<)
2443         (operator>>, getline): Remove explicit instantiations from here.
2445 2017-02-02  H.J. Lu  <hongjiu.lu@intel.com>
2447         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
2449 2017-02-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2451         * configure.host: Separate Solaris/SPARC and x86 baselines.
2452         * config/abi/post/solaris2.10/baseline_symbols.txt: Move ...
2453         * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: ... here.
2454         * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Move ...
2455         * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
2456         ... here.
2457         * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Move ...
2458         * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: ... here.
2459         * config/abi/post/i386-solaris2.10/baseline_symbols.txt: New file.
2460         * config/abi/post/solaris2.11/baseline_symbols.txt: Move ...
2461         * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: ... here.
2462         * config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Move ...
2463         * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
2464         ... here.
2465         * config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Move ...
2466         * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: ... here.
2467         * config/abi/post/i386-solaris2.11/baseline_symbols.txt: New file.
2469         * config/abi/post/solaris2.10/baseline_symbols.txt: Regenerate.
2470         * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
2471         * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
2472         * config/abi/post/solaris2.11/baseline_symbols.txt: Likewise.
2473         * config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Likewise.
2474         * config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Likewise.
2476 2017-02-01  Jonathan Wakely  <jwakely@redhat.com>
2478         PR libstdc++/78346
2479         * include/bits/predefined_ops.h (_Iter_equals_iter): Store iterator
2480         not its referent.
2481         (_Iter_comp_to_iter): Likewise.
2482         * testsuite/25_algorithms/search/78346.cc: New test.
2484         PR libstdc++/79254
2485         * config/abi/pre/gnu.ver: Remove recently added symbols.
2486         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
2487         (basic_string::_M_copy_assign): Remove.
2488         (basic_string::operator=(const basic_string&)): Don't dispatch to
2489         _M_copy_assign. If source object is small just deallocate, otherwise
2490         perform new allocation before making any changes.
2491         * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
2492         (basic_string::_M_copy_assign(const basic_string&, true_type)):
2493         Remove.
2494         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
2495         Test cases where the allocators are equal or the string is small.
2496         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
2497         Likewise.
2499 2017-01-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
2501         Implement LWG 2825, LWG 2756 breaks class template argument
2502         deduction for optional.
2503         * include/std/optional: Add a deduction guide.
2504         * testsuite/20_util/optional/cons/deduction_guide.cc: New.
2506 2017-01-27  Jonathan Wakely  <jwakely@redhat.com>
2508         PR libstdc++/79254
2509         * config/abi/pre/gnu.ver: Add new symbols.
2510         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
2511         (basic_string::_M_copy_assign): New overloaded functions to perform
2512         copy assignment.
2513         (basic_string::operator=(const basic_string&)): Dispatch to
2514         _M_copy_assign.
2515         * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
2516         (basic_string::_M_copy_assign(const basic_string&, true_type)):
2517         Define, performing rollback on exception.
2518         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
2519         Test exception-safety guarantee.
2520         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
2521         Likewise.
2522         * testsuite/util/testsuite_allocator.h (uneq_allocator::swap): Make
2523         std::swap visible.
2525 2017-01-26  Jonathan Wakely  <jwakely@redhat.com>
2527         PR libstdc++/70607
2528         * include/tr1/complex (conj): Remove using-declaration and restore
2529         overloads, reverting previous change.
2531         * testsuite/23_containers/list/operations/78389.cc: Fix for C++11
2532         mode.
2533         * testsuite/23_containers/priority_queue/requirements/constructible.cc:
2534         Mark as unsupported in C++98 mode.
2535         * testsuite/23_containers/queue/requirements/constructible.cc:
2536         Likewise.
2537         * testsuite/23_containers/stack/requirements/constructible.cc:
2538         Likewise.
2539         * testsuite/25_algorithms/make_heap/movable.cc: Fix for C++11 mode.
2541         PR libstdc++/79243
2542         * include/bits/c++config (literals::string_view_literals::__7): Add.
2543         Only declare versioned namespaces for the relevant C++ dialects.
2544         * include/experimental/bits/erase_if.h (fundamentals_v2::__detail):
2545         Add versioning macros.
2546         * include/experimental/bits/lfts_config.h:
2547         (fundamentals_v1::__detail::__7, fundamentals_v2::__detail::__7): Add.
2548         * include/experimental/string_view (fundamentals_v2::__detail):
2549         Add versioning macros.
2550         (fundamentals_v2::__detail::__identity): Remove.
2551         (fundamentals_v2::__detail::__idt): Use common_type instead of
2552         __detail::__identity.
2553         * include/std/string_view (__detail::__identity, __detail::__idt):
2554         Likewise.
2555         (literals::string_view_literals): Fix nesting of versioning macros.
2557         PR libstdc++/79190
2558         * libsupc++/del_opa.cc (operator delete(void*, std::align_val_t))
2559         [!_GLIBCXX_HAVE_ALIGNED_ALLOC && !_GLIBCXX_HAVE_POSIX_MEMALIGN
2560         && !_GLIBCXX_HAVE_MEMALIGN && !_GLIBCXX_HAVE__ALIGNED_MALLOC]:
2561         Retrieve original pointer value allocated by malloc.
2562         * libsupc++/new_opa.cc [!_GLIBCXX_HAVE_ALIGNED_ALLOC
2563         && !_GLIBCXX_HAVE_POSIX_MEMALIGN && !_GLIBCXX_HAVE_MEMALIGN
2564         && !_GLIBCXX_HAVE__ALIGNED_MALLOC] (aligned_alloc(size_t, size_t)):
2565         Define, adjusting pointer value allocated by malloc and storing for
2566         retrieval by operator delete.
2568 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
2570         * libsupc++/eh_atomics.h: Update copyright years.
2571         * testsuite/20_util/unique_ptr/cons/default.cc: Update copyright years.
2573 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
2575         PR libstdc++/61791
2576         PR libstdc++/70607
2577         * include/std/complex (real(T), imag(T)): Add _GLIBCXX_CONSTEXPR.
2578         (proj(T), conj(T)): Change return types per DR 1522.
2579         * include/tr1/complex (conj): Remove overloads and use std::conj.
2580         * testsuite/26_numerics/complex/dr781_dr1137.cc: Rename to...
2581         * testsuite/26_numerics/complex/dr781.cc: ... this, and update.
2582         * testsuite/26_numerics/complex/value_operations/constexpr2.cc: Test
2583         real(T) and imag(T). Allow testing for C++11 too.
2585 2017-01-24  Jonathan Wakely  <jwakely@redhat.com>
2587         PR libstdc++/79206
2588         * include/experimental/string_view (operator==): Check sizes first.
2589         * include/std/string_view (operator==): Likewise.
2591 2017-01-23  Jonathan Wakely  <jwakely@redhat.com>
2593         * testsuite/experimental/array/make_array.cc: Restore <functional>
2594         inclusion.
2596 2017-01-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
2598         * testsuite/29_atomics/atomic/69301.cc: Require atomic builtins.
2600 2017-01-23  Jonathan Wakely  <jwakely@redhat.com>
2602         PR libstdc++/79195
2603         * include/experimental/array (__make_array_elem): New class template
2604         and partial specialization.
2605         (__is_reference_wrapper): Move into __make_array_elem specialization.
2606         (make_array): Use __make_array_elem to determine element type and move
2607         static assertion into specialization. Qualify std::forward call.
2608         (to_array): Add exception specifiation.
2609         * testsuite/experimental/array/make_array.cc: Test argument types
2610         without a common type.
2611         * testsuite/experimental/array/neg.cc: Adjust expected error message.
2613 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
2615         * doc/xml/manual/debug.xml: code.google.com uses https now.
2617 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
2619         * doc/xml/manual/test.xml: Fix link into gccint online manual.
2621 2017-01-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
2623         Make poisoned hashes SFINAE away the call operator of the hash.
2624         * include/bits/functional_hash.h
2625         (__poison_hash::__enable_hash_call): New.
2626         * include/std/optional (__optional_hash_call_base): New.
2627         (hash<optional<_Tp>>): Derive from the new base,
2628         move the hash function into that base.
2629         * include/std/variant (__variant_hash_call_base_impl): New.
2630         (__variant_hash_call_base): Likewise.
2631         (hash<variant<_Types...>>): Derive from the new base,
2632         move the hash function into that base.
2633         * testsuite/20_util/optional/hash.cc: Add tests for is_callable.
2634         * testsuite/20_util/variant/hash.cc: Likewise.
2636 2017-01-20  Joe Seymour  <joe.s@somniumtech.com>
2638         * acinclude.m4 (GLIBCXX_CHECK_SIZE_T_MANGLING): Support uint20_t.
2639         * configure: Regenerate.
2641 2017-01-20  Jonathan Wakely  <jwakely@redhat.com>
2643         PR libstdc++/69240
2644         * include/bits/random.h (uniform_real_distribution::param_type)
2645         (normal_distribution::param_type, lognormal_distribution::param_type)
2646         (gamma_distribution::param_type, chi_squared_distribution::param_type)
2647         (cauchy_distribution::param_type, fisher_f_distribution::param_type)
2648         (student_t_distribution::param_type)
2649         (bernoulli_distribution::param_type, binomial_distribution::param_type)
2650         (geometric_distribution::param_type)
2651         (negative_binomial_distribution::param_type)
2652         (poisson_distribution::param_type)
2653         (exponential_distribution::param_type)
2654         (weibull_distribution::param_type)
2655         (extreme_value_distribution::param_type)
2656         (discrete_distribution::param_type)
2657         (piecewise_constant_distribution::param_type)
2658         (piecewise_linear_distribution::param_type): Define operator!=.
2659         * include/bits/uniform_int_dist.h
2660         (uniform_int_distribution::param_type): Likewise.
2661         * include/ext/random (beta_distribution::param_type)
2662         (rice_distribution::param_type, nakagami_distribution::param_type)
2663         (pareto_distribution::param_type, k_distribution::param_type)
2664         (arcsine_distribution::param_type, hoyt_distribution::param_type)
2665         (triangular_distribution::param_type)
2666         (von_mises_distribution::param_type)
2667         (hypergeometric_distribution::param_type)
2668         (logistic_distribution::param_type)
2669         (uniform_on_sphere_distribution::param_type)
2670         (uniform_inside_sphere_distribution::param_type): Likewise.
2671         * testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc:
2672         Test construction with param_type.
2673         * testsuite/26_numerics/random/binomial_distribution/cons/parms.cc:
2674         Likewise.
2675         * testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc:
2676         Likewise.
2677         * testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc:
2678         Likewise.
2679         * testsuite/26_numerics/random/exponential_distribution/cons/parms.cc:
2680         Likewise.
2681         * testsuite/26_numerics/random/extreme_value_distribution/cons/
2682         parms.cc: Likewise.
2683         * testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc:
2684         Likewise.
2685         * testsuite/26_numerics/random/gamma_distribution/cons/parms.cc:
2686         Likewise.
2687         * testsuite/26_numerics/random/geometric_distribution/cons/parms.cc:
2688         Likewise.
2689         * testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc:
2690         Likewise.
2691         * testsuite/26_numerics/random/negative_binomial_distribution/cons/
2692         parms.cc: Likewise.
2693         * testsuite/26_numerics/random/normal_distribution/cons/parms.cc:
2694         Likewise.
2695         * testsuite/26_numerics/random/poisson_distribution/cons/parms.cc:
2696         Likewise.
2697         * testsuite/26_numerics/random/student_t_distribution/cons/parms.cc:
2698         Likewise.
2699         * testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc:
2700         Likewise.
2701         * testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc:
2702         Likewise.
2703         * testsuite/26_numerics/random/weibull_distribution/cons/parms.cc:
2704         Likewise.
2705         * testsuite/ext/random/arcsine_distribution/cons/parms.cc: Likewise.
2706         * testsuite/ext/random/beta_distribution/cons/parms.cc: Likewise.
2707         * testsuite/ext/random/hoyt_distribution/cons/parms.cc: Likewise.
2708         * testsuite/ext/random/hypergeometric_distribution/cons/parms.cc:
2709         Likewise.
2710         * testsuite/ext/random/k_distribution/cons/parms.cc: Likewise.
2711         * testsuite/ext/random/logistic_distribution/cons/parms.cc: Likewise.
2712         * testsuite/ext/random/nakagami_distribution/cons/parms.cc: Likewise.
2713         * testsuite/ext/random/normal_mv_distribution/cons/parms.cc: Likewise.
2714         * testsuite/ext/random/pareto_distribution/cons/parms.cc: Likewise.
2715         * testsuite/ext/random/rice_distribution/cons/parms.cc: Likewise.
2716         * testsuite/ext/random/triangular_distribution/cons/parms.cc:
2717         Likewise.
2718         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/
2719         parms.cc: Likewise.
2720         * testsuite/ext/random/von_mises_distribution/cons/parms.cc: Likewise.
2722         PR libstdc++/72792
2723         * include/bits/alloc_traits.h (__allocator_traits_base::__diff_type)
2724         (__allocator_traits_base::__size_type): Remove.
2725         (allocator_traits::_Ptr): New class template to detect const and void
2726         pointer types without instantiating pointer_traits::rebind
2727         unnecessarily.
2728         (allocator_traits::_Diff): Likewise for detecting difference_type.
2729         (allocator_traits::_Size): New class template to detect size_type
2730         without instantiating make_unsigned unnecessarily.
2731         * include/bits/ptr_traits.h (pointer_traits::element_type): Use
2732         __detected_or_t instead of __detected_or_t_.
2733         * include/std/type_traits (__detected_or_t_): Remove.
2734         * testsuite/20_util/allocator_traits/members/pointers.cc: New test.
2736         PR libstdc++/72792
2737         PR libstdc++/72793
2738         * include/bits/alloc_traits.h (__allocator_traits_base::__rebind):
2739         Replace with class template using void_t.
2740         (__alloc_rebind): Define in terms of
2741         __allocator_traits_base::__rebind.
2742         (allocator_traits): Remove unconditional static_assert for
2743         rebind_alloc.
2744         * include/bits/ptr_traits.h (__replace_first_arg): Remove type member.
2745         (pointer_traits::__rebind): Replace with class template using void_t.
2746         (pointer_traits::rebind): Define in terms of __rebind.
2747         (pointer_traits): Remove unconditional static_assert for rebind.
2748         * testsuite/20_util/allocator_traits/members/rebind_alloc.cc: New test.
2749         * testsuite/20_util/pointer_traits/rebind.cc: New test.
2751         PR libstdc++/69321
2752         * include/experimental/any (__any_caster): Avoid instantiating
2753         manager function for types that can't be stored in any.
2754         * include/std/any (__any_caster): Likewise.
2755         * testsuite/20_util/any/misc/any_cast.cc: Test non-copyable type.
2756         * testsuite/experimental/any/misc/any_cast.cc: Likewise.
2758         PR libstdc++/64903
2759         * include/bits/stl_algo.h (is_partitioned): Use increment instead of
2760         std::advance.
2762 2017-01-19  Jonathan Wakely  <jwakely@redhat.com>
2764         PR libstdc++/79156
2765         * include/bits/shared_ptr_base.h (__enable_shared_from_this_base):
2766         Fix return type.
2767         (__enable_shared_from_this): Declare __shared_ptr as a friend.
2768         * testsuite/ext/shared_ptr/1.cc: New test.
2770         PR libstdc++/64903
2771         * include/bits/stl_algo.h (is_partitioned): Don't retest the partition
2772         point.
2773         * testsuite/25_algorithms/is_partitioned/2.cc: New test.
2775         * doc/xml/manual/abi.xml: Fix typo.
2776         * doc/html/manual/abi.html: Likewise.
2778         PR libstdc++/67085
2779         * include/bits/predefined_ops.h (_Iter_less_val, _Val_less_iter): Add
2780         converting constructors from _Iter_less_iter.
2781         (_Iter_comp_val, _Val_comp_iter): Add converting constructors from
2782         _Iter_comp_iter.
2783         (__iter_comp_val(_Iter_comp_iter<C>): Use converting constructor.
2784         (__val_comp_iter(_Iter_comp_iter<C>): Likewise.
2785         * include/bits/stl_heap.h (__is_heap_until, __push_heap, __pop_heap)
2786         (__make_heap, __sort_heap): Change _Compare parameters to references.
2787         (__is_heap, push_heap, __adjust_heap, __pop_heap, pop_heap)
2788         (__make_heap, make_heap, sort_heap, is_heap_until): Pass comparison
2789         functions as lvalues.
2790         (is_heap): Call __is_heap_until directly to avoid copying __comp.
2791         * testsuite/23_containers/priority_queue/67085.cc: Adjust test to
2792         count copies during construction with empty sequence.
2794         PR libstdc++/67085
2795         * include/bits/stl_heap.h (__is_heap): Use _GLIBCXX_MOVE.
2796         (__make_heap, __sort_heap): Don't use _GLIBCXX_MOVE inside loops.
2797         * testsuite/23_containers/priority_queue/67085.cc: Adjust expected
2798         number of copies.
2799         * testsuite/25_algorithms/make_heap/movable.cc: New test.
2801         PR libstdc++/67085
2802         * include/bits/stl_heap.h (push_heap, __adjust_heap, __pop_heap)
2803         (pop_heap, __make_heap, make_heap, __sort_heap, sort_heap): Use
2804         _GLIBCXX_MOVE when passing comparison function to other functions.
2805         (is_heap_until, is_heap): Use std::move when passing comparison
2806         function.
2807         * testsuite/23_containers/priority_queue/67085.cc: New test.
2809         PR libstdc++/78905
2810         * doc/xml/manual/abi.xml (abi.versioning.history): Add markup to
2811         macro names, filenames, and literal values. Document _GLIBCXX_RELEASE.
2812         Document that the deprecated _GLIBCXX_VERSION macro was removed for
2813         the 4.0.0 release.
2814         * doc/html/*: Regenerate.
2815         * include/Makefile.am (_GLIBCXX_RELEASE): Set value.
2816         * include/Makefile.in: Regenerate.
2817         * include/bits/c++config (_GLIBCXX_RELEASE): Add #define.
2818         * testsuite/ext/profile/mutex_extensions_neg.cc: Use lineno of 0 in
2819         dg-error.
2821 2017-01-18  Jonathan Wakely  <jwakely@redhat.com>
2823         PR libstdc++/69301
2824         * include/std/atomic (atomic<T>::load, atomic<T>::exchange): Use
2825         aligned buffer instead of default-initialized variable.
2826         * testsuite/29_atomics/atomic/69301.cc: New test.
2827         * include/experimental/memory (observer_ptr::release): Use reserved
2828         name.
2829         * include/ext/pointer.h (_Pointer_adapter::operator++(int))
2830         (_Pointer_adapter::operator--(int)): Likewise.
2832         PR libstdc++/68925
2833         * include/experimental/random (randint): Use temporary instead of
2834         thread_local static.
2836 2017-01-17  Joshua Conner  <joshconner@google.com>
2838         * crossconfig.m4: Add fuchsia OS.
2839         * configure: Regenerate.
2841 2017-01-17  Jonathan Wakely  <jwakely@redhat.com>
2843         PR libstdc++/69699
2844         * doc/xml/manual/abi.xml (abi.versioning.history): Explain why the
2845         __GLIBCXX__ macro is not useful. Remove redundant date information
2846         and link to the GCC release timeline.
2847         (abi.versioning.active): Move partial sentence into the previous
2848         paragraph.
2849         * doc/html/*: Regenerate.
2851         PR libstdc++/79114
2852         * libsupc++/nested_exception.h (throw_with_nested): Use decay instead
2853         of remove_reference.
2854         * testsuite/18_support/nested_exception/79114.cc: New test.
2856 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
2858         PR other/79046
2859         * configure.ac: Add GCC_BASE_VER.
2860         * fragment.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
2861         get version from BASE-VER file.
2862         * po/Makefile.in: Regenerated.
2863         * libsupc++/Makefile.in: Regenerated.
2864         * testsuite/Makefile.in: Regenerated.
2865         * src/Makefile.in: Regenerated.
2866         * configure: Regenerated.
2867         * Makefile.in: Regenerated.
2868         * include/Makefile.in: Regenerated.
2869         * doc/Makefile.in: Regenerated.
2870         * python/Makefile.in: Regenerated.
2871         * src/c++11/Makefile.in: Regenerated.
2872         * src/c++98/Makefile.in: Regenerated.
2873         * src/filesystem/Makefile.in: Regenerated.
2875 2017-01-16  Jonathan Wakely  <jwakely@redhat.com>
2877         PR libstdc++/66145
2878         * src/c++11/functexcept.cc: Use new ABI for std::ios_base::failure
2879         exceptions.
2880         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Don't override ABI
2881         for test, so new ios::failure can be caught.
2882         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
2883         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
2884         exceptions_failbit.cc: Likewise.
2885         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
2886         exceptions_failbit.cc: Likewise.
2887         * testsuite/27_io/basic_istream/extractors_other/char/
2888         exceptions_null.cc: Likewise.
2889         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
2890         exceptions_null.cc: Likewise.
2891         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
2892         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
2893         * testsuite/27_io/basic_ostream/inserters_other/char/
2894         exceptions_null.cc: Likewise.
2895         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
2896         exceptions_null.cc: Likewise.
2897         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
2899         PR libstdc++/78702
2900         * include/bits/locale_classes.h (locale::facet::__shim): Change from
2901         private to protected.
2902         * src/c++11/cxx11-shim_facets.cc (__shim_accessor): Define helper to
2903         make locale::facet::__shim accessible.
2905 2017-01-16  Ville Voutilainen  <ville.voutilainen@gmail.com>
2907         PR libstdc++/78389
2908         * include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments.
2909         (merge(list&&, _StrictWeakOrdering)): Likewise.
2910         * testsuite/23_containers/list/operations/78389.cc: Add
2911         better test for the sizes.
2913 2017-01-14  Jonathan Wakely  <jwakely@redhat.com>
2915         * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
2916         Skip test when -D_GLIBCXX_PROFILE mode is included in options.
2917         * testsuite/23_containers/map/modifiers/extract.cc: Likewise.
2918         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
2919         Likewise.
2920         * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
2921         * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
2922         * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
2923         * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
2924         * testsuite/23_containers/unordered_map/modifiers/extract.cc:
2925         Likewise.
2926         * testsuite/23_containers/unordered_multimap/modifiers/extract.cc::
2927         Likewise.
2928         * testsuite/23_containers/unordered_multiset/modifiers/extract.cc::
2929         Likewise.
2930         * testsuite/23_containers/unordered_set/modifiers/extract.cc:
2931         Likewise.
2932         * testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
2933         Likewise.
2934         * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
2935         * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
2936         * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
2937         * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
2938         * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
2939         * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
2940         * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
2941         * testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
2942         * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
2943         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
2944         * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
2945         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
2946         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
2948 2017-01-13  Jonathan Wakely  <jwakely@redhat.com>
2950         PR libstdc++/65411
2951         * config/io/basic_file_stdio.cc (__basic_file<char>::close()): Don't
2952         retry fclose on EINTR.
2954         * include/profile/base.h: Remove unused header that leads to header
2955         cycle in C++17 mode.
2957         PR libstdc++/79075
2958         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string):
2959         Make _If_sv private.
2960         [!_GLIBCXX_USE_CXX11_ABI] (basic_string): Add member functions taking
2961         basic_string_view arguments.
2963         PR libstdc++/79075
2964         * testsuite/lib/libstdc++.exp (check_v3_target_filesystem_ts): Remove
2965         redundant option from cxxflags.
2966         (check_effective_target_cxx11-abi): Define.
2967         * testsuite/21_strings/basic_string/allocator/71964.cc: Use cxx11-abi
2968         effective target.
2969         * testsuite/21_strings/basic_string/allocator/char/copy.cc: Likewise.
2970         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
2971         Likewise.
2972         * testsuite/21_strings/basic_string/allocator/char/minimal.cc:
2973         Likewise.
2974         * testsuite/21_strings/basic_string/allocator/char/move.cc: Likewise.
2975         * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
2976         Likewise.
2977         * testsuite/21_strings/basic_string/allocator/char/noexcept.cc:
2978         Likewise.
2979         * testsuite/21_strings/basic_string/allocator/char/swap.cc: Likewise.
2980         * testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
2981         Likewise.
2982         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
2983         Likewise.
2984         * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
2985         Likewise.
2986         * testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
2987         Likewise.
2988         * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
2989         Likewise.
2990         * testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
2991         Likewise.
2992         * testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
2993         Likewise.
2994         * testsuite/23_containers/list/61347.cc: Likewise.
2995         * testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
2996         * testsuite/27_io/ios_base/failure/cxx11.cc: Likewise.
2998 2017-01-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
3000         PR libstdc++/78389
3001         * include/bits/list.tcc (merge(list&&)):
3002         Adjust list sizes if the comparator throws.
3003         (merge(list&&, _StrictWeakOrdering)): Likewise.
3004         (sort()): Splice elements back from the scratch buffers
3005         if the comparator throws.
3006         (sort(_StrictWeakOrdering)): Likewise.
3007         * testsuite/23_containers/list/operations/78389.cc: New.
3009 2017-01-13  Jonathan Wakely  <jwakely@redhat.com>
3011         * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Mark
3012         XFAIL for C++17 until node reinsertion supports fancy pointers.
3014         PR libstdc++/78361
3015         * testsuite/20_util/add_pointer/value.cc: Test forming function
3016         pointers.
3018 2017-01-13  Michael Brune  <lucdanton@free.fr>
3020         PR libstdc++/78361
3021         * include/std/type_traits (__is_referenceable): Handle noexcept
3022         function types.
3024 2017-01-12  Jonathan Wakely  <jwakely@redhat.com>
3026         PR libstdc++/77528
3027         * include/bits/stl_queue.h (queue, priority_queue): Remove default
3028         member-initializers and define default constructors as templates with
3029         constraints.
3030         * include/bits/stl_stack.h (stack): Likewise.
3031         * testsuite/23_containers/priority_queue/requirements/constructible.cc:
3032         New.
3033         * testsuite/23_containers/priority_queue/requirements/
3034         explicit_instantiation/1.cc: Test more instantiations.
3035         * testsuite/23_containers/priority_queue/requirements/
3036         explicit_instantiation/1_c++98.cc: Likewise.
3037         * testsuite/23_containers/queue/requirements/constructible.cc: New.
3038         * testsuite/23_containers/stack/requirements/constructible.cc: New.
3040         PR libstdc++/66284
3041         * doc/xml/manual/intro.xml: Document LWG 2781 change.
3042         * doc/html/*: Regenerate.
3043         * include/std/functional (_Function_base::_Ref_manager): Remove.
3044         (_Function_handler): Remove partial specializations for
3045         reference_wrapper.
3046         (function::target): Remove special case for const qualification.
3047         * testsuite/20_util/function/6.cc: Adjust tests for target type.
3048         * testsuite/20_util/function/7.cc: Likewise.
3049         * testsuite/20_util/function/8.cc: Likewise.
3051 2017-01-11  Jonathan Wakely  <jwakely@redhat.com>
3053         PR libstdc++/78134
3054         * include/bits/stl_map.h (map::lower_bound, map::upper_bound)
3055         (map::equal_range): Fix return type of heterogeneous overloads.
3056         * include/bits/stl_multimap.h (multimap::lower_bound)
3057         (multimap::upper_bound, multimap::equal_range): Likewise.
3058         * include/bits/stl_multiset.h (multiset::lower_bound)
3059         (multiset::upper_bound, multiset::equal_range): Likewise.
3060         * include/bits/stl_set.h (set::lower_bound, set::upper_bound)
3061         (set::equal_range): Likewise.
3062         * testsuite/23_containers/map/operations/2.cc
3063         * testsuite/23_containers/multimap/operations/2.cc
3064         * testsuite/23_containers/multiset/operations/2.cc
3065         * testsuite/23_containers/set/operations/2.cc
3067         PR libstdc++/78273
3068         * include/bits/stl_map.h (map::count<_Kt>(const _Kt&)): Don't assume
3069         the heterogeneous comparison can only find one match.
3070         * include/bits/stl_set.h (set::count<_Kt>(const _Kt&)): Likewise.
3071         * testsuite/23_containers/map/operations/2.cc: Test count works with
3072         comparison function that just partitions rather than sorting.
3073         * testsuite/23_containers/set/operations/2.cc: Likewise.
3075 2017-01-11  Ville Voutilainen  <ville.voutilainen@gmail.com>
3077         Reduce the size of variant, it doesn't need an index of
3078         type size_t internally.
3079         * include/std/variant (parse_numbers.h): New include.
3080         (__select_index): New.
3081         (_Variant_storage<false, _Types...>::_M_reset_impl): Use
3082         _index_type for comparison with variant_npos.
3083         (_Variant_storage<false, _Types...>::__index_type): New.
3084         (_Variant_storage<false, _Types...>::_M_index): Change the
3085         type from size_t to __index_type.
3086         (_Variant_storage<true, _Types...>::__index_type): New.
3087         (_Variant_storage<true, _Types...>::_M_index): Change the
3088         type from size_t to __index_type.
3089         (_Variant_base::_M_valid): Use _Storage::__index_type
3090         for comparison with variant_npos.
3091         (variant::index): Use _Base::_Storage::__index_type
3092         for comparison with variant_npos.
3093         * testsuite/20_util/variant/index_type.cc: New.
3095 2017-01-10  Jonathan Wakely  <jwakely@redhat.com>
3097         * testsuite/18_support/exception_ptr/60612-unexpected.cc: Adjust
3098         effective target selector to prevent running in C++17 mode.
3100         PR libstdc++/77528
3101         * include/bits/stl_queue.h (queue::c): Add default member initializer.
3102         (queue::queue()): Add constructor and define as defaulted.
3103         (queue::queue(_Sequence&&)): Remove default argument.
3104         (priority_queue::c, priority_queue::comp): Add default member
3105         initializers.
3106         (priority_queue::priority_queue()): Add constructor and define as
3107         defaulted.
3108         (priority_queue::priority_queue(const _Compare&, _Sequence&&)):
3109         Remove default argument for first parameter.
3110         * include/bits/stl_stack.h (stack::c): Add default member initializer.
3111         (stack::stack()): Add constructor and define as defaulted.
3112         (stack::stack(const _Sequence&)): Remove default argument.
3113         * testsuite/23_containers/priority_queue/requirements/
3114         explicit_instantiation/1.cc: Test explicit instantiation with
3115         non-DefaultConstructible sequence.
3116         * testsuite/23_containers/priority_queue/77528.cc: New test.
3117         * testsuite/23_containers/priority_queue/requirements/
3118         explicit_instantiation/1_c++0x.cc: Replace with 1_c++98.cc.
3119         * testsuite/23_containers/queue/77528.cc: New test.
3120         * testsuite/23_containers/queue/requirements/explicit_instantiation/
3121         1.cc: Test explicit instantiation with non-DefaultConstructible
3122         sequence.
3123         * testsuite/23_containers/queue/requirements/explicit_instantiation/
3124         1_c++0x.cc: Replace with 1_c++98.cc.
3125         * testsuite/23_containers/stack/77528.cc: New test.
3126         * testsuite/23_containers/stack/requirements/explicit_instantiation/
3127         1.cc: Test explicit instantiation with non-DefaultConstructible
3128         sequence.
3129         * testsuite/23_containers/stack/requirements/explicit_instantiation/
3130         1_c++0x.cc: Replace with 1_c++98.cc.
3132 2017-01-10  Felipe Magno de Almeida <felipe@expertisesolutions.com.br>
3134         * include/bits/locale_facets_nonio.tcc
3135         (time_get::_M_extract_via_format): Avoid compilation errors with
3136         non-standard struct tm.
3138 2017-01-10  François Dumont  <fdumont@gcc.gnu.org>
3139             Jonathan Wakely  <jwakely@redhat.com>
3141         * python/libstdcxx/v6/printers.py (_versioned_namespace): Define.
3142         (is_specialization, strip_versioned_namespace): New helpers functions
3143         to work with symbols in the versioned namespace.
3144         (Printer.add_version): Add second name using versioned namespace.
3145         (add_one_template_type_printer, add_one_type_printer): Add second
3146         type printers using versioned namespace.
3147         (register_type_printers): Add template type printer for basic_string.
3148         (build_libstdcxx_dictionary): Remove dead code.
3149         * python/libstdcxx/v6/xmethods.py: Make all matchers look for
3150         versioned namespace.
3151         * testsuite/libstdc++-prettyprinters/48362.cc: Adjust expected
3152         results.
3153         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
3155 2017-01-09  Jonathan Wakely  <jwakely@redhat.com>
3157         PR libstdc++/79017
3158         * acinclude.m4 (GLIBCXX_CHECK_C99_TR1): Check for llrint and llround
3159         functions separately on darwin and if they're missing define
3160         _GLIBCXX_NO_C99_ROUNDING_FUNCS.
3161         * config.h.in: Regenerate.
3162         * configure: Regenerate.
3163         * include/c_global/cmath [_GLIBCXX_NO_C99_ROUNDING_FUNCS] (llrint)
3164         (llrintf, llrintl, llround, llroundf, llroundl): Do not define.
3166         * testsuite/30_threads/condition_variable/members/3.cc: Use new macro
3167         to detect correct thread_local destructors.
3168         * testsuite/util/testsuite_hooks.h (CORRECT_THREAD_LOCAL_DTORS):
3169         Define.
3171 2017-01-09  Jonathan Wakely  <jwakely@redhat.com>
3172             Aditya Kumar  <hiraditya@msn.com>
3174         PR libstdc++/66414
3175         * include/bits/basic_string.tcc
3176         (basic_string::find(const CharT*, size_type, size_type)): Optimize.
3178 2017-01-06  Jonathan Wakely  <jwakely@redhat.com>
3180         * testsuite/21_strings/basic_string/operations/find/char/6.cc: New.
3181         * testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc: New.
3183         * testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp:
3184         Include <cassert> header.
3186         PR libstdc++/78968
3187         * crossconfig.m4: Check for __cxa_thread_atexit on *-*-freebsd*.
3188         * configure: Regenerate.
3190 2017-01-06  Barrett Adair  <barrettellisadair@gmail.com>
3191             Jonathan Wakely  <jwakely@redhat.com>
3193         * include/std/variant (variant, swap): Replace __and_ usage with fold
3194         expressions.
3196 2017-01-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3198         PR go/78978
3199         * acinclude.m4 (GLIBCXX_CHECK_ASSEMBLER_HWCAP): Remove.
3200         * configure.ac: Call GCC_CHECK_ASSEMBLER_HWCAP instead of
3201         GLIBCXX_CHECK_ASSEMBLER_HWCAP.
3202         * fragment.am (CONFIG_CXXFLAGS): Use HWCAP_CFLAGS instead of
3203         HWCAP_FLAGS.
3204         * aclocal.m4: Regenerate.
3205         * configure: Regenerate.
3206         * Makefile.in, doc/Makefile.in, include/Makefile.in,
3207         libsupc++/Makefile.in, po/Makefile.in, python/Makefile.in,
3208         src/Makefile.in, src/c++11/Makefile.in, src/c++98/Makefile.in,
3209         src/filesystem/Makefile.in, testsuite/Makefile.in: Regenerate.
3211 2017-01-06  Jonathan Wakely  <jwakely@redhat.com>
3213         * include/bits/c++config (_GLIBCXX_ASSERTIONS): Avoid redefinition.
3215         PR libstdc++/78991
3216         * include/bits/predefined_ops.h (_Iter_comp_iter, _Iter_comp_val)
3217         (_Val_comp_iter, _Iter_equals_val, _Iter_pred, _Iter_comp_to_val)
3218         (_Iter_comp_to_iter, _Iter_negate): Make constructors explicit and
3219         move function objects.
3220         (__iter_comp_iter, __iter_comp_val, __val_comp_iter, __pred_iter)
3221         (__iter_comp_val, __iter_comp_iter, __negate): Move function objects.
3222         * testsuite/25_algorithms/sort/78991.cc: New test.
3224 2017-01-05  Jonathan Wakely  <jwakely@redhat.com>
3226         * include/bits/std_function.h (function::_Signature_type): Remove.
3227         (function::function(_Functor)): Adjust.
3229 2017-01-05  Tim Shen  <timshen@google.com>
3231         PR libstdc++/78996
3232         * include/std/variant (__gen_vtable_impl): rename __unused to
3233         __dimensions to avoid naming conflict.
3235 2017-01-04  Jonathan Wakely  <jwakely@redhat.com>
3237         PR libstdc++/78968
3238         * config.h.in: Regenerate.
3239         * configure: Likewise.
3240         * configure.ac: Check for __cxa_thread_atexit.
3241         * libsupc++/atexit_thread.cc [_GLIBCXX_HAVE___CXA_THREAD_ATEXIT]:
3242         Don't define __cxa_thread_atexit if libc provides it.
3244 2017-01-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
3246         Implement 2801, Default-constructibility of unique_ptr.
3247         * include/bits/unique_ptr.h (__uniq_ptr_impl::_DeleterConstraint): New.
3248         (unique_ptr::_DeleterConstraint): Likewise.
3249         (unique_ptr()): Constrain.
3250         (unique_ptr(pointer)): Likewise.
3251         (unique_ptr(nullptr_t)): Likewise.
3252         (unique_ptr<_Tp[], _Dp>::_DeleterConstraint): New.
3253         (unique_ptr<_Tp[], _Dp>::unique_ptr()): Constrain.
3254         (unique_ptr<_Tp[], _Dp>::unique_ptr(_Up)): Likewise.
3255         (unique_ptr<_Tp[], _Dp>::unique_ptr(nullptr_t)): Likewise.
3256         * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Adjust.
3257         * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
3258         * testsuite/20_util/unique_ptr/cons/default.cc: New.
3259         * testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Adjust.
3261 2017-01-04  Pauli Nieminen  <suokkos@gmail.com>
3262             Jonathan Wakely  <jwakely@redhat.com>
3264         PR libstdc++/64735
3265         * acinclude.m4 (GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER): Define.
3266         * config.h.in: Regenerate.
3267         * config/abi/pre/gnu.ver [HAVE_EXCEPTION_PTR_SINCE_GCC46]
3268         (GLIBCXX_3.4.15, GLIBCXX_3.4.21, CXXABI_1.3.3, CXXABI_1.3.5): Make
3269         exports for exception_ptr, nested_exception, and future conditional.
3270         [HAVE_EXCEPTION_PTR_SINCE_GCC46] (GLIBCXX_3.4.23, CXXABI_1.3.11): Add
3271         exports for exception_ptr, nested_exception, and future conditional.
3272         * configure: Regenerate.
3273         * configure.ac: Use GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER.
3274         * include/std/future: Remove check for ATOMIC_INT_LOCK_FREE
3275         * libsupc++/eh_atomics.h: New file for internal use only.
3276         (__eh_atomic_inc, __eh_atomic_dec): New.
3277         * libsupc++/eh_ptr.cc (exception_ptr::_M_addref)
3278         (exception_ptr::_M_release) (__gxx_dependent_exception_cleanup)
3279         (rethrow_exception): Use eh_atomics.h reference counting helpers.
3280         * libsupc++/eh_throw.cc (__gxx_exception_cleanup): Likewise.
3281         * libsupc++/eh_tm.cc (free_any_cxa_exception): Likewise.
3282         * libsupc++/exception: Remove check for ATOMIC_INT_LOCK_FREE.
3283         * libsupc++/exception_ptr.h: Likewise.
3284         * libsupc++/guard.cc: Include header for ATOMIC_INT_LOCK_FREE macro.
3285         * libsupc++/nested_exception.cc: Remove check for
3286         ATOMIC_INT_LOCK_FREE.
3287         * libsupc++/nested_exception.h: Likewise.
3288         * src/c++11/future.cc: Likewise.
3289         * testsuite/18_support/exception_ptr/*: Remove atomic builtins checks.
3290         * testsuite/18_support/nested_exception/*: Likewise.
3291         * testsuite/30_threads/async/*: Likewise.
3292         * testsuite/30_threads/future/*: Likewise.
3293         * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
3294         * testsuite/30_threads/packaged_task/*: Likewise.
3295         * testsuite/30_threads/promise/*: Likewise.
3296         * testsuite/30_threads/shared_future/*: Likewise.
3298 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
3300         * doc/xml/manual/documentation_hacking.xml: sourceforge.net now
3301         defaults to https; adjust reference.
3303 2017-01-03  Jonathan Wakely  <jwakely@redhat.com>
3305         PR libstdc++/78956
3306         * include/std/thread (thread(const thread&&)): Add deleted
3307         constructor.
3308         * testsuite/30_threads/thread/cons/lwg2097.cc: New test.
3310         * doc/xml/manual/spine.xml: Update copyright years.
3311         * doc/xml/manual/build_hacking.xml: Fix spelling of libbuilddir.
3312         * doc/xml/manual/test.xml: Likewise.
3313         * doc/html/*: Regenerate.
3315 2017-01-01  Gerald Pfeifer  <gerald@pfeifer.com>
3317         * doc/xml/faq.xml: Update address of C++ ABI link.
3318         * doc/xml/manual/abi.xml: Ditto.
3320 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
3322         Update copyright years.
3324 Copyright (C) 2017 Free Software Foundation, Inc.
3326 Copying and distribution of this file, with or without modification,
3327 are permitted in any medium without royalty provided the copyright
3328 notice and this notice are preserved.