PR libstdc++/83279 handle sendfile not copying entire file
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob1b4c6e281e671c6be8184bdf0010f42de3c75e47
1 2017-12-14  Jonathan Wakely  <jwakely@redhat.com>
3         PR libstdc++/83279
4         * src/filesystem/std-ops.cc (do_copy_file): Handle sendfile not
5         copying entire file.
7         PR libstdc++/68519
8         * include/std/condition_variable (condition_variable::wait_for):
9         Convert duration to native clock's duration before addition.
10         * testsuite/30_threads/condition_variable/members/68519.cc: New test.
12         PR libstdc++/83427
13         * include/bits/refwrap.h (_Maybe_unary_or_binary_function): Move here
14         from <bits/std_function.h>.
15         (_Mem_fn_traits_base, _Mem_fn_traits): Move here, from <functional>.
16         (_Weak_result_type_impl, _Reference_wrapper_base): Deduce noexcept
17         for function types. Remove partial specializations for member
18         functions.
19         (_Weak_result_type_impl): Remove unused partial specializations for
20         non-referenceable function types and for references to functions.
21         (_Weak_result_type_memfun, _Reference_wrapper_base_memfun): New
22         helpers to handle member functions via _Mem_fn_traits.
23         (_Weak_result_type, reference_wrapper): Derive from new helpers.
24         * include/bits/std_function.h (_Maybe_unary_or_binary_function): Move
25         to <bits/refwrap.h>.
26         * include/std/functional (_Pack, _AllConvertible, _NotSame): Remove.
27         (_Mem_fn_traits_base, _Mem_fn_traits): Move to <bits/refwrap.h>.
28         * testsuite/20_util/bind/83427.cc: New test.
29         * testsuite/20_util/bind/refqual.cc: Add noexcept to functions and
30         check for weak result types.
31         * testsuite/20_util/reference_wrapper/83427.cc: New test.
33         * testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc:
34         Add tests using noskipws.
36         * testsuite/26_numerics/complex/dr2714.cc: Move to ...
37         * testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc:
38         ... Here. Remove duplicate header and dg-options. Check first invalid
39         character gets putback. Remove wchar_t test.
41 2017-12-13  Jonathan Wakely  <jwakely@redhat.com>
43         PR libstdc++/59568
44         * include/std/complex (operator>>): Implement proposed resolution to
45         LWG 2714. Use putback if and only if a character has been successfully
46         extracted but isn't a delimiter. Use ctype::widen and traits::eq when
47         testing if extracted characters match delimiters.
48         * testsuite/26_numerics/complex/dr2714.cc: New test.
50 2017-12-12  Jonathan Wakely  <jwakely@redhat.com>
52         PR libstdc++/83395
53         * include/std/type_traits (__is_invocable_impl): Remove partial
54         specialization for INVOKE<void> and restore is_void<R> check in
55         primary template.
56         (__is_nt_invocable_impl): Likewise.
57         * testsuite/20_util/is_invocable/83395.cc: New test.
58         * testsuite/20_util/is_nothrow_invocable/83395.cc: New test.
60 2017-12-07  David Edelsohn  <dje.gcc@gmail.com>
62         PR libstdc++/83120
63         * testsuite/ext/special_functions/hyperg/check_value.cc: Add
64         -ffp-contract=off. Add -ffloat-store for m68* and ia32.
65         * testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc: Same.
67 2017-12-07  Martin Sebor  <msebor@redhat.com>
69         PR c/81544
70         * include/ext/mt_allocator.h (_M_destroy_thread_key): Remove
71         attribute const.
73 2017-12-05  Jason Merrill  <jason@redhat.com>
74             Jonathan Wakely  <jwakely@redhat.com>
76         * include/bits/fs_fwd.h (copy, copy_file): Remove noexcept.
77         (permissions): Add noexcept.
78         * include/bits/fs_ops.h (permissions): Add noexcept.
79         * libsupc++/eh_throw.cc (__cxa_init_primary_exception): Add
80         _GLIBCXX_NOTHROW.
82 2017-12-04  Jonathan Wakely  <jwakely@redhat.com>
84         * include/bits/regex_compiler.tcc: Use C-style comment to work around
85         PR preprocessor/61638.
86         (__INSERT_REGEX_MATCHER): Replace GNU extension with __VA_ARGS__.
88         * config/io/basic_file_stdio.h (__basic_file): Remove name of unused
89         parameter.
90         * include/bits/boost_concept_check.h: Add pragmas to disable
91         -Wunused-local-typedef warnings.
92         * include/bits/codecvt.h (codecvt_byname<char16_t, char, mbstate_t>)
93         (codecvt_byname<char32_t, char, mbstate_t>): Remove name of unused
94         parameter.
95         * include/bits/locale_facets_nonio.tcc (time_get::do_get_weekday)
96         (time_get::do_get_monthname, time_get::do_get_year): Remove unused
97         variables.
98         * include/std/bitset (_Base_bitset<0>::_M_getword): Remove name of
99         unused parameter.
100         * include/std/streambuf (_IsUnused): Define.
101         (basic_streambuf::imbue, basic_streambuf::pbackfail)
102         (basic_streambuf::overflow): Add macro to unused parameters.
103         * testsuite/24_iterators/operations/prev_neg.cc: Adjust dg-error.
105 2017-12-01  Jonathan Wakely  <jwakely@redhat.com>
107         * include/experimental/string_view (basic_string_view::_S_compare):
108         Use value-init so narrowing conversions are not ill-formed.
109         * include/std/string_view (basic_string_view::_S_compare): Likewise.
111         * include/bits/basic_string.h (operator""s): Add pragmas to disable
112         -Wliteral-suffix warnings.
113         * include/experimental/string_view (operator""sv): Likewise.
114         * include/std/chrono (operator""h, operator""min, operator""s)
115         (operator""ms, operator""us, operator""ns): Likewise.
116         * include/std/complex (operator""if, operator""i, operator""il):
117         Likewise.
118         * include/std/string_view (operator""sv): Likewise.
119         * testsuite/20_util/duration/literals/range.cc: Adjust dg-error.
121         * include/bits/locale_facets_nonio.tcc (money_get::_M_extract): Add
122         fallthrough comment.
124         * include/bits/node_handle.h (_Node_handle_common::operator=)
125         (_Node_handle_common::_M_swap): Add braces around debug assertions.
127         * include/ext/ropeimpl.h (rope::_S_dump): Use const char*.
129         * libsupc++/nested_exception.h (__throw_with_nested_impl): Add
130         noreturn attribute.
132         * include/bits/regex_executor.tcc (_Executor::_M_rep_once_more):
133         Remove semi-colon after function body.
134         * include/bits/uniform_int_dist.h (_Power_of_2): Likewise.
136         * include/tr1/modified_bessel_func.tcc (__airy): Use value-init not
137         list-init.
139         * include/std/type_traits (integral_constant): Make member functions
140         noexcept (LWG 2346).
141         * include/std/utility (integer_sequence): Likewise.
143 2017-11-30  Jonathan Wakely  <jwakely@redhat.com>
145         PR libstdc++/65927
146         * include/bits/locale_facets_nonio.h (__timepunct::_M_am_pm_format):
147         Remove statement with no effect.
149 2017-11-30  Glen Joseph Fernandes  <glenjofe@gmail.com>
151         * include/bits/ptr_traits.h (__to_address, to_address): Move static
152         assertion.
153         * testsuite/20_util/to_address/1_neg.cc: New test.
155 2017-11-30  Jonathan Wakely  <jwakely@redhat.com>
157         PR libstdc++/83226
158         * include/bits/node_handle.h (_Node_handle::__pointer): Avoid forming
159         pointer-to-reference types.
160         * testsuite/23_containers/map/modifiers/insert/83226.cc: New test.
162 2017-11-29  John David Anglin  <danglin@gcc.gnu.org>
164         * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
166 2017-11-29  David Malcolm  <dmalcolm@redhat.com>
168         * testsuite/20_util/duration/literals/range.cc: Update expected
169         line of a static_assert failure.
171 2017-11-28  Glen Joseph Fernandes  <glenjofe@gmail.com>
173         * include/bits/ptr_traits.h (to_address): Implement to_address.
174         * testsuite/20_util/to_address/1.cc: New test.
176 2017-11-27  Stephan Bergmann  <sbergman@redhat.com>
178         * include/std/string_view (basic_string_view::find_first_of): Add
179         missing noexcept.
181         * include/bits/unordered_map.h (unordered_map): Fix deduction guide.
182         * include/debug/unordered_map (unordered_map): Likewise.
184 2017-11-23  Jonathan Wakely  <jwakely@redhat.com>
186         * libsupc++/new (launder): Add nodiscard attribute.
187         * testsuite/18_support/launder/nodiscard.cc: New test.
189         * include/bits/fs_path.h (path::empty): Add nodiscard attribute.
190         * include/bits/range_access.h (empty): Likewise.
191         * include/std/string_view (basic_string_view::empty): Likewise.
192         * testsuite/21_strings/basic_string_view/capacity/empty_neg.cc: New
193         test.
194         * testsuite/24_iterators/range_access_cpp17_neg.cc: New test.
195         * testsuite/27_io/filesystem/path/query/empty_neg.cc: New test.
197         PR libstdc++/83134
198         * include/std/type_traits (__not_): Explicitly convert to bool.
199         * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error.
200         * testsuite/20_util/logical_traits/83134.cc: New test.
201         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
202         dg-error.
203         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
204         Likewise.
206 2017-11-22  Jonathan Wakely  <jwakely@redhat.com>
208         PR go/83102
209         * include/bits/stl_tree.h (_Rb_tree): Relax invocable checks for
210         comparison object pre-C++17.
212 2017-11-21  Jonathan Wakely  <jwakely@redhat.com>
214         PR libstdc++/48101
215         * include/bits/allocator.h (allocator<const _Tp>)
216         (allocator<volatile _Tp>, allocator<const volatile _Tp>): Add partial
217         specializations.
218         * include/bits/forward_list.h (forward_list): Add static assertions.
219         * include/bits/hashtable.h (__cache_default): Use
220         __is_nothrow_invocable instead of __is_noexcept_hash.
221         (_Hashtable): Add static assertions.
222         * include/bits/hashtable_policy.h (__is_noexcept_hash): Remove.
223         * include/bits/stl_deque.h (deque): Add static assertions.
224         * include/bits/stl_function.h (_Identity<const _Tp>): Add partial
225         specialization.
226         * include/bits/stl_list.h (list): Add static assertions.
227         * include/bits/stl_map.h (map): Likewise.
228         * include/bits/stl_multimap.h (multimap): Likewise.
229         * include/bits/stl_multiset.h (multiset): Likewise.
230         * include/bits/stl_set.h (set): Likewise.
231         * include/bits/stl_tree.h (_Rb_tree): Likewise.
232         * include/bits/stl_vector.h (vector): Likewise.
233         * include/bits/unordered_map.h (unordered_map, unordered_multimap):
234         Use typename instead of class in template-parameter-list and remove
235         spaces.
236         * include/bits/unordered_set.h (unordered_set, unordered_multiset):
237         Likewise.
238         * testsuite/23_containers/deque/48101-2_neg.cc: New test.
239         * testsuite/23_containers/deque/48101_neg.cc: New test.
240         * testsuite/23_containers/forward_list/48101-2_neg.cc: New test.
241         * testsuite/23_containers/forward_list/48101_neg.cc: New test.
242         * testsuite/23_containers/list/48101-2_neg.cc: New test.
243         * testsuite/23_containers/list/48101_neg.cc: New test.
244         * testsuite/23_containers/map/48101-2_neg.cc: New test.
245         * testsuite/23_containers/map/48101_neg.cc: New test.
246         * testsuite/23_containers/map/operations/31440.cc: Fix comparison
247         object to have const-qualified call operator.
248         * testsuite/23_containers/multimap/48101-2_neg.cc: New test.
249         * testsuite/23_containers/multimap/48101_neg.cc: New test.
250         * testsuite/23_containers/multiset/48101-2_neg.cc: New test.
251         * testsuite/23_containers/multiset/48101_neg.cc: New test.
252         * testsuite/23_containers/set/48101-2_neg.cc: New test.
253         * testsuite/23_containers/set/48101_neg.cc: New test.
254         * testsuite/23_containers/unordered_map/48101-2_neg.cc: New test.
255         * testsuite/23_containers/unordered_map/48101_neg.cc: New test.
256         * testsuite/23_containers/unordered_multimap/48101-2_neg.cc: New test.
257         * testsuite/23_containers/unordered_multimap/48101_neg.cc: New test.
258         * testsuite/23_containers/unordered_multiset/48101-2_neg.cc: New test.
259         * testsuite/23_containers/unordered_multiset/48101_neg.cc: New test.
260         * testsuite/23_containers/unordered_set/48101-2_neg.cc: New test.
261         * testsuite/23_containers/unordered_set/48101_neg.cc: New test.
262         * testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
263         dg-error line number.
264         * testsuite/23_containers/vector/48101-2_neg.cc: New test.
265         * testsuite/23_containers/vector/48101_neg.cc: New test.
267 2017-11-21  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
269         * doc/xml/manual/using.xml (manual.intro.using.macros): Move
270         variablelist element at the end of its list.
272 2017-11-21  Sebastian Huber  <sebastian.huber@embedded-brains.de>
274         * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Add rtems*.
275         (GLIBCXX_ENABLE_FILESYSTEM_TS): Likewise.
276         * configure: Regenerate.
278 2017-11-20  François Dumont  <fdumont@gcc.gnu.org>
280         * include/bits/streambuf_iterator.h (istreambuf_iterator<>): Declare
281         std::advance for istreambuf_iterator of char types to be friend.
282         (std::advance(istreambuf_iterator&, _Distance)): New overload.
283         * include/std/streambuf (basic_streambuf<>): Declare std::advance for
284         istreambuf_iterator of char types to be friend.
285         * testsuite/22_locale/money_get/get/char/9.cc: Have
286         istreambuf_iterator created on the fly when calling money_get<>::get.
287         * testsuite/22_locale/money_get/get/wchar_t/9.cc: Likewise.
288         * testsuite/24_iterators/istreambuf_iterator/debug/1_neg.cc: New.
289         * testsuite/24_iterators/istreambuf_iterator/debug/2_neg.cc: New.
290         * testsuite/25_algorithms/advance/istreambuf_iterators/char/1.cc: New.
291         * testsuite/25_algorithms/advance/istreambuf_iterators/char/1_neg.cc:
292         New.
293         * testsuite/25_algorithms/advance/istreambuf_iterators/char/2.cc: New.
294         * testsuite/25_algorithms/advance/istreambuf_iterators/char/2_neg.cc:
295         New.
296         * testsuite/25_algorithms/advance/istreambuf_iterators/char/3_neg.cc:
297         New.
298         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1.cc:
299         New.
300         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1_neg.cc:
301         New.
302         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2.cc:
303         New.
304         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2_neg.cc:
305         New.
306         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/3_neg.cc:
307         New.
308         * testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc: Leverage
309         on std::advance overload.
310         * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
311         Likewise.
313 2017-11-20  Jonathan Wakely  <jwakely@redhat.com>
315         * testsuite/special_functions/18_riemann_zeta/check_value.cc: Fix
316         duplicate dg-options directive.
317         * testsuite/tr1/5_numerical_facilities/special_functions/
318         20_riemann_zeta/check_value_neg.cc: Likewise.
320 2017-11-20  Ville Voutilainen  <ville.voutilainen@gmail.com>
322         Implement LWG 2353
323         * include/bits/stl_iterator_base_funcs.h (next):
324         Use InputIterator instead of ForwardIterator.
325         * testsuite/24_iterators/operations/lwg2353.cc: New.
326         * testsuite/24_iterators/operations/next_neg.cc: Remove.
328 2017-11-18  Edward Smith-Rowland  <3dw4rd@verizon.net>
330         PR libstdc++/pr66689 - comp_ellint_3 and ellint_3 return garbage values
331         * include/tr1/ell_integral.tcc: Correct the nu sign convention
332         in ellint_3 and comp_ellint_3.
333         * testsuite/tr1/5_numerical_facilities/special_functions/
334         06_comp_ellint_3/check_value.cc: Regen with correct values.
335         * testsuite/tr1/5_numerical_facilities/special_functions/
336         14_ellint_3/check_value.cc: Ditto.
337         * testsuite/special_functions/06_comp_ellint_3/check_value.cc: Ditto.
338         * testsuite/special_functions/13_ellint_3/check_value.cc: Ditto.
339         * testsuite/tr1/5_numerical_facilities/special_functions/
340         01_assoc_laguerre/check_value.cc: Regen.
341         * testsuite/tr1/5_numerical_facilities/special_functions/
342         02_assoc_legendre/check_value.cc: Regen.
343         * testsuite/tr1/5_numerical_facilities/special_functions/
344         03_beta/check_value.cc: Regen.
345         * testsuite/tr1/5_numerical_facilities/special_functions/
346         04_comp_ellint_1/check_value.cc: Regen.
347         * testsuite/tr1/5_numerical_facilities/special_functions/
348         05_comp_ellint_2/check_value.cc: Regen.
349         * testsuite/tr1/5_numerical_facilities/special_functions/
350         07_conf_hyperg/check_value.cc: Regen.
351         * testsuite/tr1/5_numerical_facilities/special_functions/
352         08_cyl_bessel_i/check_value.cc: Regen.
353         * testsuite/tr1/5_numerical_facilities/special_functions/
354         09_cyl_bessel_j/check_value.cc: Regen.
355         * testsuite/tr1/5_numerical_facilities/special_functions/
356         10_cyl_bessel_k/check_value.cc: Regen.
357         * testsuite/tr1/5_numerical_facilities/special_functions/
358         11_cyl_neumann/check_value.cc: Regen.
359         * testsuite/tr1/5_numerical_facilities/special_functions/
360         12_ellint_1/check_value.cc: Regen.
361         * testsuite/tr1/5_numerical_facilities/special_functions/
362         13_ellint_2/check_value.cc: Regen.
363         * testsuite/tr1/5_numerical_facilities/special_functions/
364         15_expint/check_value_neg.cc: Regen.
365         * testsuite/tr1/5_numerical_facilities/special_functions/
366         16_hermite/check_value.cc: Regen.
367         * testsuite/tr1/5_numerical_facilities/special_functions/
368         17_hyperg/check_value.cc: Regen.
369         * testsuite/tr1/5_numerical_facilities/special_functions/
370         18_laguerre/check_value.cc: Regen.
371         * testsuite/tr1/5_numerical_facilities/special_functions/
372         19_legendre/check_value.cc: Regen.
373         * testsuite/tr1/5_numerical_facilities/special_functions/
374         20_riemann_zeta/check_value_neg.cc: Regen.
375         * testsuite/tr1/5_numerical_facilities/special_functions/
376         21_sph_bessel/check_value.cc: Regen.
377         * testsuite/tr1/5_numerical_facilities/special_functions/
378         22_sph_legendre/check_value.cc: Regen.
379         * testsuite/tr1/5_numerical_facilities/special_functions/
380         23_sph_neumann/check_value.cc: Regen.
381         * testsuite/ext/special_functions/conf_hyperg/check_value.cc: Regen.
382         * testsuite/ext/special_functions/hyperg/check_value.cc: Regen.
383         * testsuite/special_functions/01_assoc_laguerre/check_value.cc: Regen.
384         * testsuite/special_functions/02_assoc_legendre/check_value.cc: Regen.
385         * testsuite/special_functions/03_beta/check_value.cc: Regen.
386         * testsuite/special_functions/04_comp_ellint_1/check_value.cc: Regen.
387         * testsuite/special_functions/05_comp_ellint_2/check_value.cc: Regen.
388         * testsuite/special_functions/07_cyl_bessel_i/check_value.cc: Regen.
389         * testsuite/special_functions/08_cyl_bessel_j/check_value.cc: Regen.
390         * testsuite/special_functions/09_cyl_bessel_k/check_value.cc: Regen.
391         * testsuite/special_functions/10_cyl_neumann/check_value.cc: Regen.
392         * testsuite/special_functions/11_ellint_1/check_value.cc: Regen.
393         * testsuite/special_functions/12_ellint_2/check_value.cc: Regen.
394         * testsuite/special_functions/14_expint/check_value.cc: Regen.
395         * testsuite/special_functions/15_hermite/check_value.cc: Regen.
396         * testsuite/special_functions/16_laguerre/check_value.cc: Regen.
397         * testsuite/special_functions/17_legendre/check_value.cc: Regen.
398         * testsuite/special_functions/18_riemann_zeta/check_value.cc: Regen.
399         * testsuite/special_functions/19_sph_bessel/check_value.cc: Regen.
400         * testsuite/special_functions/20_sph_legendre/check_value.cc: Regen.
401         * testsuite/special_functions/21_sph_neumann/check_value.cc: Regen.
402         * testsuite/tr1/5_numerical_facilities/special_functions/
403         06_comp_ellint_3/pr66689.cc: New.
404         * testsuite/tr1/5_numerical_facilities/special_functions/
405         14_ellint_3/pr66689.cc: New.
406         * testsuite/special_functions/06_comp_ellint_3/pr66689.cc: New.
407         * testsuite/special_functions/13_ellint_3/pr66689.cc: New.
409 2017-11-18  Edward Smith-Rowland  <3dw4rd@verizon.net>
410         Expose Airy functions as an extenaion.
411         * include/bits/specfun.h: Expose airy_ai and airy_bi.
412         * include/tr1/modified_bessel_func.tcc: Treat NaN and inf arg, return.
413         * testsuite/ext/special_functions/airy_ai/check_nan.cc: New.
414         * testsuite/ext/special_functions/airy_ai/check_value.cc: New.
415         * testsuite/ext/special_functions/airy_ai/compile.cc: New.
416         * testsuite/ext/special_functions/airy_bi/check_nan.cc: New.
417         * testsuite/ext/special_functions/airy_bi/check_value.cc: New.
418         * testsuite/ext/special_functions/airy_bi/compile.cc: New.
420 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
422         * acinclude.m4: Add cet.m4.
423         * configure.ac: Set CET_FLAGS. Update EXTRA_CFLAGS,
424         EXTRA_CXX_FLAGS.
425         * libsupc++/Makefile.am: Use Add EXTRA_CFLAGS.
426         * Makefile.in: Regenerate.
427         * configure: Likewise.
428         * doc/Makefile.in: Likewise.
429         * include/Makefile.in: Likewise.
430         * libsupc++/Makefile.in: Likewise.
431         * po/Makefile.in: Likewise.
432         * python/Makefile.in: Likewise.
433         * src/Makefile.in: Likewise.
434         * src/c++11/Makefile.in: Likewise.
435         * src/c++98/Makefile.in: Likewise.
436         * src/filesystem/Makefile.in: Likewise.
437         * testsuite/Makefile.in: Likewise.
439 2017-11-17  Jonathan Wakely  <jwakely@redhat.com>
441         PR libstdc++/83025
442         * include/std/fstream (basic_filebuf::_If_path): Move to
443         namespace-scope and rename to _If_fs_path.
444         (basic_filebuf::open): Use new name.
445         (basic_ifstream(_Path, ios::openmode))
446         (basic_ifstream::open(_Path, ios::openmode))
447         (basic_ofstream(_Path, ios::openmode))
448         (basic_ofstream::open(_Path, ios::openmode))
449         (basic_fstream(_Path, ios::openmode))
450         (basic_fstream::open(_Path, ios::openmode)): Use _If_fs_path.
451         * testsuite/27_io/basic_filebuf/open/char/path.cc: Test with filename
452         as non-const char*.
453         * testsuite/27_io/basic_fstream/cons/char/path.cc: Likewise.
454         * testsuite/27_io/basic_fstream/open/char/path.cc: Likewise.
455         * testsuite/27_io/basic_ifstream/cons/char/path.cc: Likewise.
456         * testsuite/27_io/basic_ifstream/open/char/path.cc: Likewise.
457         * testsuite/27_io/basic_ofstream/cons/char/path.cc: Likewise.
458         * testsuite/27_io/basic_ofstream/open/char/path.cc: Likewise.
461 2017-11-17  Marc Glisse  <marc.glisse@inria.fr>
463         * include/bits/vector.tcc (vector::_M_realloc_insert): Cache old
464         values before the allocation.
466 2017-11-16  Jonathan Wakely  <jwakely@redhat.com>
468         * include/std/future (shared_future): Add noexcept to copy constructor
469         and copy-assignment operator (LWG 2799).
471 2017-11-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
473         Fix gcd breakage.
474         * include/std/numeric (gcd): Use remove_cv_t, not remove_cv.
476 2017-11-15  Jonathan Wakely  <jwakely@redhat.com>
478         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Leave
479         error_code unset.
480         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
481         Check for past-the-end before dereferencing.
482         * testsuite/experimental/filesystem/iterators/
483         recursive_directory_iterator.cc: Likewise.
485         * include/bits/range_access.h (size, empty, data): Add conditional
486         noexcept to generic overloads.
488 2017-11-14  Ville Voutilainen  <ville.voutilainen@gmail.com>
490         Implement LWG 2733 and LWG 2759
491         * include/experimental/numeric (gcd): Reject cv-qualified bool.
492         (lcm): Likewise.
493         * include/std/numeric (gcd): Likewise.
494         (lcm): Likewise.
495         * testsuite/26_numerics/gcd/gcd_neg.cc: Add tests and adjust.
496         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
498 2017-11-14  Jonathan Wakely  <jwakely@redhat.com>
500         * include/bits/locale_conv.h (wbuffer_convert::_M_conv_get): Fix typo.
501         * testsuite/22_locale/conversions/buffer/3.cc: New test.
503 2017-11-10  Jonathan Wakely  <jwakely@redhat.com>
505         * testsuite/util/testsuite_tr1.h (ThrowMoveConsClass): Use noexcept.
507         PR libstdc++/82917
508         * include/std/fstream (basic_ifstream::open, basic_ofstream::open)
509         (basic_fstream::open): Fix missing return.
511 2017-11-07  Jonathan Wakely  <jwakely@redhat.com>
513         * src/filesystem/ops-common.h (make_file_type) [S_ISSOCK]: Only use
514         S_ISSOCK when defined.
516 2017-11-06  François Dumont  <fdumont@gcc.gnu.org>
518         * testsuite/libstdc++-prettyprinters/tr1.cc:  Compile with -O0.
520 2017-11-06  Martin Liska  <mliska@suse.cz>
522         * testsuite/27_io/basic_fstream/cons/char/path.cc (main):
523           Return a value for functions with non-void return type,
524           or change type to void, or add -Wno-return-type for test.
525         * testsuite/27_io/basic_ifstream/cons/char/path.cc (main):
526         Likewise.
527         * testsuite/27_io/basic_ofstream/open/char/path.cc (main):
528         Likewise.
530 2017-11-06  Paolo Carlini  <paolo.carlini@oracle.com>
532         * testsuite/20_util/optional/cons/deduction.cc: Avoid -Wreturn-type
533         warnings.
534         * testsuite/20_util/pair/cons/deduction.cc: Likewise.
535         * testsuite/20_util/pair/traits.cc: Likewise.
536         * testsuite/20_util/tuple/cons/deduction.cc: Likewise.
537         * testsuite/20_util/variant/compile.cc: Likewise.
538         * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
539         * testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
540         Likewise.
542 2017-11-05  Gerald Pfeifer  <gerald@pfeifer.com>
544         * doc/xml/manual/abi.xml: Move docs.oracle.com references to https.
546 2017-11-03  Jonathan Wakely  <jwakely@redhat.com>
548         * include/std/type_traits (endian): Define new enumeration type.
549         * testsuite/20_util/endian/1.cc: New test.
551         * include/bits/node_handle.h (_Node_insert_return::get): Remove, as
552         per P0508R0.
554 2017-11-01  François Dumont  <fdumont@gcc.gnu.org>
556         * python/libstdcxx/v6/printers.py (StdExpAnyPrinter.__init__): Strip
557         typename versioned namespace before the substitution.
558         (StdExpOptionalPrinter.__init__): Likewise.
559         (StdVariantPrinter.__init__): Likewise.
560         (Printer.add_version): Inject versioned namespace after std or
561         __gnu_cxx.
562         (build_libstdcxx_dictionary): Adapt add_version usages, always pass
563         namespace first and symbol second.
565 2017-11-01  Jonathan Wakely  <jwakely@redhat.com>
567         PR libstdc++/82777
568         * src/filesystem/std-path.cc (path::lexically_normal): Remove dot-dot
569         elements correctly.
570         * testsuite/27_io/filesystem/path/generation/normal.cc: Add testcase.
571         * testsuite/util/testsuite_fs.h (compare_paths): Improve exception
572         text.
574 2017-10-30  Jonathan Wakely  <jwakely@redhat.com>
576         * include/Makefile.am (stamp-bits-sup): Do not create broken symlink
577         to stamp-bits.
578         * include/Makefile.in: Regenerate.
580         * include/std/fstream (basic_ifstream, basic_ofstream, basic_fstream):
581         Remove outdated comments about calling c_str() to create a file stream
582         from a std::string.
583         (basic_ofstream::basic_ofstream, basic_ofstream::open): Remove
584         redundant ios_mode::trunc bits from default arguments and comments.
586         * doc/xml/faq.xml: Adjust "What is libstdc++?" answer slightly.
588         * include/bits/hashtable_policy.h: Include <tuple>.
589         * include/std/unordered_map: Only include <bits/stl_pair.h> instead
590         of <utility> and <tuple>.
591         * include/std/unordered_set: Likewise.
593 2017-10-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
595         Implement LWG 2485
596         * include/debug/array (get(const array<_Tp, _Nm>&&)): New.
597         * include/std/array (get(const array<_Tp, _Nm>&&)): Likewise.
598         * include/std/tuple (get(const tuple<_Elements...>&&)): Likewise.
599         (get(const tuple<_Types...>&&)): Likewise.
600         * include/std/utility
601         (__pair_get::__const_move_get(const std::pair<_Tp1, _Tp2>&&)):
602         Likewise.
603         (get(const std::pair<_Tp1, _Tp2>&&)): Likewise.
604         (get(const pair<_Tp, _Up>&&)): Likewise.
605         (get(const pair<_Up, _Tp>&&)): Likewise.
606         * testsuite/20_util/pair/astuple/get.cc: Add tests for
607         new overloads.
608         * testsuite/20_util/pair/astuple/get_by_type.cc: Likewise.
609         * testsuite/20_util/tuple/element_access/get2.cc: Likewise.
610         * testsuite/20_util/tuple/element_access/get2_by_type.cc: Likewise.
611         * testsuite/23_containers/array/tuple_interface/get.cc: Likewise.
612         * testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc:
613         Adjust.
614         * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
615         Likewise.
617 2017-10-27  Jonathan Wakely  <jwakely@redhat.com>
619         * include/bits/node_handle.h (_Node_insert_return::get): Avoid
620         use of std::tie and std::get.
622         * include/Makefile.am: Put headers in alphabetical order.
623         * include/Makefile.in: Regenerate.
625         * include/bits/fs_dir.h (directory_iterator): Remove noexcept from
626         constructors and increment member (LWG 3013).
627         (recursive_directory_iterator): Likewise.
628         * include/bits/fs_ops.h (copy, copy_file, create_directories)
629         (is_empty, remove_all): Remove noexcept (LWG 3013 and LWG 3014).
630         * src/filesystem/std-dir.cc (directory_iterator::increment)
631         (recursive_directory_iterator::increment): Remove noexcept.
632         * src/filesystem/std-ops.cc (copy, copy_file, create_directories)
633         (is_empty, remove_all): Remove noexcept
635         * include/bits/fs_dir.h (file_status): Make default constructor
636         non-explicit (LWG 2787).
637         * testsuite/27_io/filesystem/file_status/1.cc: New test.
638         * testsuite/experimental/filesystem/file_status/1.cc: New test.
640         * include/std/fstream (basic_filebuf::_If_path): New SFINAE helper.
641         (basic_filebuf::open<Path>(const Path&, const ios_base::openmode&))
642         (basic_ifstream<Path>(const Path&, const ios_base::openmode&))
643         (basic_ifstream::open<Path>(const Path&, const ios_base::openmode&))
644         (basic_ofstream<Path>(const Path&, const ios_base::openmode&))
645         (basic_ofstream::open<Path>(const Path&, const ios_base::openmode&))
646         (basic_fstream<Path>(const Path&, const ios_base::openmode&))
647         (basic_fstream::open<Path>(const Path&, const ios_base::openmode&)):
648         New constructors and member functions.
649         * testsuite/27_io/basic_filebuf/open/char/path.cc: New test.
650         * testsuite/27_io/basic_fstream/cons/char/path.cc: New test.
651         * testsuite/27_io/basic_fstream/open/char/path.cc: New test.
652         * testsuite/27_io/basic_ifstream/cons/char/path.cc: New test.
653         * testsuite/27_io/basic_ifstream/open/char/path.cc: New test.
654         * testsuite/27_io/basic_ofstream/cons/char/path.cc: New test.
655         * testsuite/27_io/basic_ofstream/open/char/path.cc: New test.
657         * include/bits/fs_path.h (path::format): Define new enumeration type.
658         (path(string_type&&), path<Source>(const Source&))
659         (path<InputIterator>(InputIterator, InputIterator))
660         (path<Source>(const Source&, const locale&))
661         (path<InputIterator>(InputIterator, InputIterator, const locale&)):
662         Add format parameter.
663         * testsuite/27_io/filesystem/path/construct/format.cc: New test.
665         * include/bits/stl_algo.h (__find_if_not_n, generate_n): Cast to void
666         to ensure overloaded comma not used.
667         * include/bits/stl_algobase.h (__fill_n_a, equal): Likewise.
668         * include/bits/stl_uninitialized.h (__uninitialized_fill_n)
669         (__uninitialized_fill_n_a, __uninitialized_default_n_1)
670         (__uninitialized_default_n_a, __uninitialized_copy_n)
671         (__uninitialized_copy_n_pair): Likewise
672         * testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc:
673         Use test iterator wrappers with overloaded comma operator.
674         * testsuite/25_algorithms/fill_n/1.cc: Likewise.
675         * testsuite/25_algorithms/generate_n/1.cc: New test.
676         * testsuite/25_algorithms/stable_partition/1.cc: New test.
677         * testsuite/util/testsuite_iterators.h (operator,): Add deleted
678         non-member comma operator with iterator wrappers as right operand.
680 2017-10-26  Ville Voutilainen  <ville.voutilainen@gmail.com>
682         Deduction guides for associative containers, debug mode deduction
683         guide fixes.
684         * include/bits/stl_iterator.h (__iter_key_t)
685         (__iter_val_t, __iter_to_alloc_t): New.
686         * include/bits/stl_map.h: Add deduction guides.
687         * include/bits/stl_multimap.h: Likewise.
688         * include/bits/stl_multiset.h: Likewise.
689         * include/bits/stl_set.h: Likewise.
690         * include/bits/unordered_map.h: Likewise.
691         * include/bits/unordered_set.h: Likewise.
692         * include/debug/deque: Likewise.
693         * include/debug/forward_list: Likewise.
694         * include/debug/list: Likewise.
695         * include/debug/map.h: Likewise.
696         * include/debug/multimap.h: Likewise.
697         * include/debug/multiset.h: Likewise.
698         * include/debug/set.h: Likewise.
699         * include/debug/unordered_map: Likewise.
700         * include/debug/unordered_set: Likewise.
701         * include/debug/vector: Likewise.
702         * testsuite/23_containers/map/cons/deduction.cc: New.
703         * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
704         * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
705         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
706         * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
707         * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
708         Likewise.
709         * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
710         Likewise.
711         * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
713 2017-10-25  Jonathan Wakely  <jwakely@redhat.com>
715         * doc/xml/manual/status_cxx2017.xml: Update C++17 status, and
716         information on feature-test macros.
717         * doc/html/*: Regenerate.
719         PR libstdc++/82716
720         * include/std/array (tuple_size, tuple_element): Change class-key
721         from class to struct, to avoid annoying Clang warnings.
723         PR libstdc++/79283
724         * src/filesystem/ops.cc (read_symlink): Handle st_size being zero.
725         * src/filesystem/std-ops.cc (read_symlink): Likewise.
726         (do_copy_file) [!NEED_DO_COPY_FILE]: Avoid multiple definitions.
728         * src/filesystem/std-path.cc (path::lexically_normal): Add missing
729         step to algorithm, for removing dot-dot elements after root-directory.
730         * testsuite/27_io/filesystem/operations/canonical.cc: Use
731         compare_paths for more exhaustive checks.
732         * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
733         * testsuite/27_io/filesystem/path/append/path.cc: Likewise.
734         * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
735         * testsuite/27_io/filesystem/path/concat/strings.cc: Fix comment.
736         * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
737         * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
738         Likewise.
739         * testsuite/27_io/filesystem/path/generation/normal.cc: Use
740         compare_paths for more exhaustive checks. Add extra testcases.
741         * testsuite/27_io/filesystem/path/generation/proximate.cc: Use
742         compare_paths for more exhaustive checks.
743         * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
744         * testsuite/27_io/filesystem/path/generic/generic_string.cc: Remove
745         unused header.
746         * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: Fix
747         comment.
748         * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: Use
749         compare_paths for more exhaustive checks.
750         * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
751         Likewise.
752         * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
753         Likewise.
754         * testsuite/util/testsuite_fs.h (compare_paths): Also compare native
755         strings.
757         PR libstdc++/82706
758         * testsuite/27_io/filesystem/operations/permissions.cc: Fix test.
760 2017-10-24  François Dumont  <fdumont@gcc.gnu.org>
762         * testsuite/lib/libstdc++.exp (check_v3_target_normal_mode): Add
763         c++config.h include.
764         (check_v3_target_normal_namespace): New.
765         * testsuite/lib/dg-options.exp (dg-require-normal-namespace): New.
766         * testsuite/18_support/headers/limits/synopsis.cc: Add latter.
767         * testsuite/20_util/from_chars/requirements.cc: Likewise.
768         * testsuite/20_util/headers/functional/synopsis.cc: Likewise.
769         * testsuite/20_util/headers/memory/synopsis.cc: Likewise.
770         * testsuite/20_util/headers/utility/synopsis.cc: Likewise.
771         * testsuite/20_util/to_chars/requirements.cc: Likewise.
772         * testsuite/21_strings/headers/string/synopsis.cc: Likewise.
773         * testsuite/22_locale/headers/locale/synopsis.cc: Likewise.
774         * testsuite/23_containers/headers/bitset/synopsis.cc: Likewise.
775         * testsuite/23_containers/headers/deque/synopsis.cc: Likewise.
776         * testsuite/23_containers/headers/forward_list/synopsis.cc: Likewise.
777         * testsuite/23_containers/headers/list/synopsis.cc: Likewise.
778         * testsuite/23_containers/headers/map/synopsis.cc: Likewise.
779         * testsuite/23_containers/headers/queue/synopsis.cc: Likewise.
780         * testsuite/23_containers/headers/set/synopsis.cc: Likewise.
781         * testsuite/23_containers/headers/stack/synopsis.cc: Likewise.
782         * testsuite/23_containers/headers/vector/synopsis.cc: Likewise.
783         * testsuite/23_containers/map/modifiers/erase/abi_tag.cc: Likewise.
784         * testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc: Likewise.
785         * testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc: Likewise.
786         * testsuite/23_containers/set/modifiers/erase/abi_tag.cc: Likewise.
787         * testsuite/24_iterators/headers/iterator/synopsis.cc: Likewise.
788         * testsuite/24_iterators/headers/iterator/synopsis_c++11.cc: Likewise.
789         * testsuite/24_iterators/headers/iterator/synopsis_c++14.cc: Likewise.
790         * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Likewise.
791         * testsuite/26_numerics/complex/abi_tag.cc: Likewise.
792         * testsuite/26_numerics/headers/complex/synopsis.cc: Likewise.
793         * testsuite/26_numerics/headers/valarray/synopsis.cc: Likewise.
794         * testsuite/27_io/headers/fstream/synopsis.cc: Likewise.
795         * testsuite/27_io/headers/ios/synopsis.cc: Likewise.
796         * testsuite/27_io/headers/istream/synopsis.cc: Likewise.
797         * testsuite/27_io/headers/ostream/synopsis.cc: Likewise.
798         * testsuite/27_io/headers/sstream/synopsis.cc: Likewise.
799         * testsuite/27_io/headers/streambuf/synopsis.cc: Likewise.
801 2017-10-24  Jonathan Wakely  <jwakely@redhat.com>
803         * config/locale/gnu/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Ignore
804         -Wattribute-alias warnings.
805         * src/c++11/istream-inst.cc: Likewise.
806         * src/c++11/locale-inst.cc: Likewise.
807         * src/c++11/ostream-inst.cc: Likewise.
808         * src/c++11/wlocale-inst.cc: Likewise.
809         * src/c++98/hash-long-double-tr1-aux.cc: Likewise.
811         * include/bits/string_view.tcc (find_first_of, find_last_of)
812         (find_first_not_of, find_last_not_of): Add noexcept.
813         * include/std/string_view (basic_string_view(const _CharT*))
814         (basic_string_view(const _CharT*, size_type))
815         (front, back, remove_prefix, remove_suffix, find, rfind)
816         (find_first_of, find_first_not_of): Add noexcept.
817         (at(size_type), _S_compare(size_type, size_type)): Replace conditional
818         expressions with if statements.
819         (copy(_CharT*, size_type, size_type), substr(size_type, size_type)):
820         Use _M_check for length checks.
821         (compare(basic_string_view)): Reformat.
822         (_M_check(size_type, const char)): Add noexcept(false).
823         (_M_limit(size_type, size_type)): Use noexcept not _GLIBCXX_NOEXCEPT.
825         PR libstdc++/82685
826         * include/experimental/string_view (operator""sv): Add noexcept.
827         * include/std/string_view (operator""sv): Likewise.
829 2017-10-23  Jonathan Wakely  <jwakely@redhat.com>
831         * include/Makefile.am: Add new headers for C++17 filesystem library.
832         * include/Makefile.in: Regenerate.
833         * include/bits/fs_dir.h: New header, based on Filesystem TS code in
834         include/experimental/bits directory.
835         * include/bits/fs_fwd.h: Likewise.
836         * include/bits/fs_ops.h: Likewise.
837         * include/bits/fs_path.h: Likewise.
838         * include/experimental/bits/fs_dir.h: Rename Doxygen group.
839         * include/experimental/bits/fs_fwd.h: Likewise.
840         * include/experimental/bits/fs_ops.h: Likewise.
841         * include/experimental/bits/fs_path.h: Likewise.
842         * include/experimental/filesystem (filesystem_error::_M_gen_what):
843         Remove inline definition.
844         * include/precompiled/stdc++.h: Add <filesystem> to precompiled
845         header.
846         * include/std/filesystem: New header.
847         * python/libstdcxx/v6/printers.py: Enable printer for std::filesystem
848         paths.
849         * src/filesystem/Makefile.am: Add new files. Compile as C++17.
850         * src/filesystem/Makefile.in: Regenerate.
851         * src/filesystem/cow-dir.cc: Update comment.
852         * src/filesystem/cow-ops.cc: Likewise.
853         * src/filesystem/cow-path.cc: Likewise.
854         * src/filesystem/cow-std-dir.cc: New file.
855         * src/filesystem/cow-std-ops.cc: New file.
856         * src/filesystem/cow-std-path.cc: New file.
857         * src/filesystem/dir-common.h (_Dir_base, get_file_type): New header
858         for common code.
859         * src/filesystem/dir.cc (_Dir): Derive from _Dir_base.
860         (open_dir): Move to _Dir_base constructor.
861         (get_file_type): Move to dir-common.h.
862         (recurse): Move to _Dir_base::should_recurse.
863         * src/filesystem/ops-common.h: New header for common code.
864         * src/filesystem/ops.cc (is_set, make_file_type, make_file_status)
865         (is_not_found_errno, file_time, do_copy_file): Move to ops-common.h.
866         * src/filesystem/path.cc (filesystem_error::_M_gen_what): Define.
867         * src/filesystem/std-dir.cc: New file, based on Filesystem TS code.
868         * src/filesystem/std-ops.cc: Likewise.
869         * src/filesystem/std-dir.cc: Likewise.
870         * testsuite/27_io/filesystem/iterators/directory_iterator.cc: New
871         test.
872         * testsuite/27_io/filesystem/iterators/pop.cc: New test.
873         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
874         New test.
875         * testsuite/27_io/filesystem/operations/absolute.cc: New test.
876         * testsuite/27_io/filesystem/operations/canonical.cc: New test.
877         * testsuite/27_io/filesystem/operations/copy.cc: New test.
878         * testsuite/27_io/filesystem/operations/copy_file.cc: New test.
879         * testsuite/27_io/filesystem/operations/create_directories.cc: New
880         test.
881         * testsuite/27_io/filesystem/operations/create_directory.cc: New test.
882         * testsuite/27_io/filesystem/operations/create_symlink.cc: New test.
883         * testsuite/27_io/filesystem/operations/current_path.cc: New test.
884         * testsuite/27_io/filesystem/operations/equivalent.cc: New test.
885         * testsuite/27_io/filesystem/operations/exists.cc: New test.
886         * testsuite/27_io/filesystem/operations/file_size.cc: New test.
887         * testsuite/27_io/filesystem/operations/is_empty.cc: New test.
888         * testsuite/27_io/filesystem/operations/last_write_time.cc: New test.
889         * testsuite/27_io/filesystem/operations/permissions.cc: New test.
890         * testsuite/27_io/filesystem/operations/proximate.cc: New test.
891         * testsuite/27_io/filesystem/operations/read_symlink.cc: New test.
892         * testsuite/27_io/filesystem/operations/relative.cc: New test.
893         * testsuite/27_io/filesystem/operations/remove_all.cc: New test.
894         * testsuite/27_io/filesystem/operations/space.cc: New test.
895         * testsuite/27_io/filesystem/operations/status.cc: New test.
896         * testsuite/27_io/filesystem/operations/symlink_status.cc: New test.
897         * testsuite/27_io/filesystem/operations/temp_directory_path.cc: New
898         test.
899         * testsuite/27_io/filesystem/operations/weakly_canonical.cc: New test.
900         * testsuite/27_io/filesystem/path/append/path.cc: New test.
901         * testsuite/27_io/filesystem/path/assign/assign.cc: New test.
902         * testsuite/27_io/filesystem/path/assign/copy.cc: New test.
903         * testsuite/27_io/filesystem/path/compare/compare.cc: New test.
904         * testsuite/27_io/filesystem/path/compare/path.cc: New test.
905         * testsuite/27_io/filesystem/path/compare/strings.cc: New test.
906         * testsuite/27_io/filesystem/path/concat/path.cc: New test.
907         * testsuite/27_io/filesystem/path/concat/strings.cc: New test.
908         * testsuite/27_io/filesystem/path/construct/copy.cc: New test.
909         * testsuite/27_io/filesystem/path/construct/default.cc: New test.
910         * testsuite/27_io/filesystem/path/construct/locale.cc: New test.
911         * testsuite/27_io/filesystem/path/construct/range.cc: New test.
912         * testsuite/27_io/filesystem/path/construct/string_view.cc: New test.
913         * testsuite/27_io/filesystem/path/decompose/extension.cc: New test.
914         * testsuite/27_io/filesystem/path/decompose/filename.cc: New test.
915         * testsuite/27_io/filesystem/path/decompose/parent_path.cc: New test.
916         * testsuite/27_io/filesystem/path/decompose/relative_path.cc: New
917         test.
918         * testsuite/27_io/filesystem/path/decompose/root_directory.cc: New
919         test.
920         * testsuite/27_io/filesystem/path/decompose/root_name.cc: New test.
921         * testsuite/27_io/filesystem/path/decompose/root_path.cc: New test.
922         * testsuite/27_io/filesystem/path/decompose/stem.cc: New test.
923         * testsuite/27_io/filesystem/path/generation/normal.cc: New test.
924         * testsuite/27_io/filesystem/path/generation/proximate.cc: New test.
925         * testsuite/27_io/filesystem/path/generation/relative.cc: New test.
926         * testsuite/27_io/filesystem/path/generic/generic_string.cc: New test.
927         * testsuite/27_io/filesystem/path/itr/traversal.cc: New test.
928         * testsuite/27_io/filesystem/path/modifiers/clear.cc: New test.
929         * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: New
930         test.
931         * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: New
932         test.
933         * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc: New
934         test.
935         * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc: New
936         test.
937         * testsuite/27_io/filesystem/path/modifiers/swap.cc: New test.
938         * testsuite/27_io/filesystem/path/native/string.cc: New test.
939         * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: New test.
940         * testsuite/27_io/filesystem/path/query/empty.cc: New test.
941         * testsuite/27_io/filesystem/path/query/has_extension.cc: New test.
942         * testsuite/27_io/filesystem/path/query/has_filename.cc: New test.
943         * testsuite/27_io/filesystem/path/query/has_parent_path.cc: New test.
944         * testsuite/27_io/filesystem/path/query/has_relative_path.cc: New
945         test.
946         * testsuite/27_io/filesystem/path/query/has_root_directory.cc: New
947         test.
948         * testsuite/27_io/filesystem/path/query/has_root_name.cc: New test.
949         * testsuite/27_io/filesystem/path/query/has_root_path.cc: New test.
950         * testsuite/27_io/filesystem/path/query/has_stem.cc: New test.
951         * testsuite/27_io/filesystem/path/query/is_relative.cc: New test.
952         * testsuite/experimental/filesystem/path/construct/string_view.cc:
953         Define USE_FILESYSTEM_TS.
954         * testsuite/util/testsuite_fs.h: Allow use with C++17 paths as well
955         as Filesystem TS.
957         PR libstdc++/82644
958         * doc/xml/manual/intro.xml: Include new section.
959         * doc/xml/manual/status_cxxis29124.xml: New section on IS 29124
960         status.
961         * include/bits/specfun.h [__STRICT_ANSI__] (hyperg, hypergf, hypergl)
962         (conf_hyperg, conf_hypergf, conf_hypergl): Don't declare.
963         * include/c_compatibility/math.h: Import special functions into
964         global namespace for C++17.
965         * testsuite/26_numerics/headers/cmath/82644.cc: New test.
966         * testsuite/26_numerics/headers/cmath/functions_global_c++17.cc: New
967         test.
969 2017-10-21  Jonathan Wakely  <jwakely@redhat.com>
971         * testsuite/experimental/filesystem/path/itr/traversal.cc: Do not
972         increment past-the-end iterators.
974 2017-10-20  Jonathan Wakely  <jwakely@redhat.com>
976         * include/std/chrono (__cpp_lib_chrono): Update macro value to
977         indicate support for P0505R0.
978         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Check
979         for updated macro.
981         * include/c_global/cstddef: Define __cpp_lib_byte feature-test macro.
982         * testsuite/18_support/byte/requirements.cc: Check macro.
984 2017-10-19  Jonathan Wakely  <jwakely@redhat.com>
986         * testsuite/experimental/filesystem/iterators/
987         recursive_directory_iterator.cc: Ensure that error_code arguments are
988         cleared when required.
989         * testsuite/experimental/filesystem/operations/create_directory.cc:
990         Remove redundant check.
991         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
992         Ensure that error_code argument is cleared when required.
994         * include/experimental/bits/fs_path.h (path::iterator++(int))
995         (path::iterator--(int)): Fix for paths with only one component.
996         * testsuite/experimental/filesystem/path/itr/traversal.cc: Test
997         post-increment and post-decrement.
999         * doc/xml/manual/status_cxx2017.xml: Update references to C++17
1000         section numbers.
1002         * testsuite/decimal/conversion-to-integral.cc: Use predefined macro
1003         instead of non-standard glibc one.
1005 2017-10-16  François Dumont  <fdumont@gcc.gnu.org>
1007         PR libstdc++/82558
1008         * include/bits/stl_bvector.h (fill): Add iterator offset check.
1009         * testsuite/23_containers/vector/bool/82558.cc: New.
1011 2017-10-13  Jonathan Wakely  <jwakely@redhat.com>
1013         PR libstdc++/82522
1014         * doc/xml/manual/intro.xml: Document LWG 2354 changes.
1015         * include/bits/stl_map.h (map::insert(value_type&&))
1016         (map::insert(const_iterator, value_type&&)): Add overload for rvalues.
1017         * include/bits/stl_multimap.h (multimap::insert(value_type&&))
1018         (multimap::insert(const_iterator, value_type&&)): Likewise.
1019         * include/bits/unordered_map.h (unordered_map::insert(value_type&&))
1020         (unordered_map::insert(const_iterator, value_type&&))
1021         (unordered_multimap::insert(value_type&&))
1022         (unordered_multimap::insert(const_iterator, value_type&&)): Likewise.
1023         * testsuite/23_containers/map/modifiers/insert/dr2354.cc: New test.
1024         * testsuite/23_containers/multimap/modifiers/insert/dr2354.cc: New
1025         test.
1026         * testsuite/23_containers/unordered_map/insert/dr2354.cc: New test.
1027         * testsuite/23_containers/unordered_multimap/insert/dr2354.cc: New
1028         test.
1030         PR libstdc++/82481
1031         * include/std/mutex (call_once): Suppress clang-tidy warnings about
1032         dangling references.
1034 2017-10-10  Jonathan Wakely  <jwakely@redhat.com>
1036         * include/bits/streambuf_iterator.h (istreambuf_iterator::equal):
1037         Update comment about NAD issue.
1039         PR libstdc++/59087
1040         PR libstdc++/82417
1041         * include/c_compatibility/complex.h [!C++98 && __STRICT_ANSI__]: Do
1042         not include C library's <complex.h>.
1043         * testsuite/26_numerics/complex/c99.cc: Depend on __STRICT_ANSI__.
1044         * testsuite/26_numerics/headers/complex.h/std_c++11.h: New test.
1045         * testsuite/26_numerics/headers/complex.h/std_gnu++11.h: New test.
1046         * testsuite/26_numerics/headers/complex.h/std_c++98.h: New test.
1048 2017-10-05  Jonathan Wakely  <jwakely@redhat.com>
1050         * testsuite/20_util/to_chars/1.cc: Add dg-require-string-conversions.
1052 2017-10-04  Petr Ovtchenkov  <ptr@void-ptr.info>
1053             François Dumont  <fdumont@gcc.gnu.org>
1055         * include/bits/streambuf_iterator.h
1056         (istreambuf_iterator<>::operator*()): Do not capture iterator state
1057         in Debug assertion.
1058         (istreambuf_iterator<>::operator++()): Likewise and remove _M_sbuf check.
1059         (istreambuf_iterator<>::operator++(int)): Likewise.
1060         (istreambuf_iterator<>::_M_get()): Remove _M_c assignment.
1061         (istreambuf_iterator<>::_S_is_eof()): New.
1062         (istreambuf_iterator<>::_M_at_eof()): Adapt, use latter.
1063         (find(istreambuf_iterator<>, istreambuf_iterator<>, _CharT)):
1064         Return an iterator with _M_c set to eof to capture streambuf state
1065         on evaluation.
1066         (testsuite/24_iterators/istreambuf_iterator/2.cc): Add checks.
1068 2017-10-03  Jakub Jelinek  <jakub@redhat.com>
1070         * include/std/charconv (__unsigned_least_t): Fix number of closing >s for
1071         !_GLIBCXX_USE_INT128.
1073 2017-10-02  Jonathan Wakely  <jwakely@redhat.com>
1075         * include/Makefile.am: Add new <charconv> header.
1076         * include/Makefile.in: Regenerate.
1077         * include/precompiled/stdc++.h: Include <charconv>.
1078         * include/std/charconv: New file.
1079         (to_chars_result, to_chars, from_chars_result, from_chars): Define.
1080         * testsuite/20_util/from_chars/1.cc: New test.
1081         * testsuite/20_util/from_chars/1_neg.cc: New test.
1082         * testsuite/20_util/from_chars/2.cc: New test.
1083         * testsuite/20_util/from_chars/requirements.cc: New test.
1084         * testsuite/20_util/to_chars/1.cc: New test.
1085         * testsuite/20_util/to_chars/1_neg.cc: New test.
1086         * testsuite/20_util/to_chars/2.cc: New test.
1087         * testsuite/20_util/to_chars/requirements.cc: New test.
1089 2017-09-27  François Dumont  <fdumont@gcc.gnu.org>
1091         * testsuite/22_locale/money_get/get/char/22131.cc: Make test less
1092         istreambuf_iterator implementation dependent.
1093         * testsuite/22_locale/money_get/get/wchar_t/22131.cc: Likewise.
1095 2017-09-25  Uros Bizjak  <ubizjak@gmail.com>
1097         PR c/81854
1098         * src/c++98/complex_io.cc (_GLIBCXX_LDBL_COMPAT): Declare alias
1099         target as a C++ function with no prototype.
1101 2017-09-21  Jonathan Wakely  <jwakely@redhat.com>
1103         * testsuite/25_algorithms/clamp/1.cc: Fix order of arguments and
1104         expected results when using predicate defining reverse order.
1105         * testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
1107 2017-09-20  Jonathan Wakely  <jwakely@redhat.com>
1109         PR libstdc++/79162
1110         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
1111         (basic_string::_If_sv): Remove from the overload set when the
1112         argument is derived from basic_string.
1114         PR libstdc++/79162
1115         * include/bits/basic_string.h (basic_string::_If_sv): Remove from the
1116         overload set when the argument is derived from basic_string.
1117         * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc: New
1118         test.
1119         * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
1120         New test.
1122         * testsuite/24_iterators/range_access_cpp17.cc: Fix order of dg-do
1123         and dg-options directives. Fix invalid test.
1125         PR libstdc++/81469
1126         * libsupc++/exception (uncaught_exception): Deprecate for C++17.
1127         * testsuite/18_support/exception_ptr/62258.cc: Add -Wno-deprecated.
1128         * testsuite/18_support/uncaught_exception/14026.cc: Likewise.
1130         * include/bits/c++config (_GLIBCXX17_DEPRECATED): Define.
1131         * include/bits/functional_hash.h (__hash_base::result_type)
1132         (__hash_base::argument_type): Add _GLIBCXX17_DEPRECATED.
1133         * include/std/optional (hash<optional<T>>::result_type)
1134         (hash<optional<T>>::argument_type): Add deprecated attribute.
1135         (__is_fast_hash<hash<optional<T>>>): Add partial specialization.
1136         * include/std/variant (hash<variant<Types...>>::result_type)
1137         (hash<variant<Types...>>::argument_type): Add deprecated attribute.
1138         (__is_fast_hash<hash<variant<Types...>>>): Add partial specialization.
1140         * libsupc++/exception_ptr.h (copy_exception): Remove deprecated
1141         non-standard function.
1143         PR libstdc++/82262
1144         * include/std/optional (__optional_hash_call_base): Add template
1145         parameter for remove_const_t<_Tp> and use it consistently.
1146         * testsuite/20_util/optional/hash.cc: Test optional<const T>.
1148 2017-09-19  Jonathan Wakely  <jwakely@redhat.com>
1150         PR libstdc++/71500
1151         * include/bits/regex_executor.tcc
1152         (_Backref_matcher<BidIt, regex_traits<C>>::_M_apply): Use
1153         std::__equal4 instead of C++14 4-iterator overloads of std::equal.
1154         * include/bits/stl_algobase.h (__equal4): New functions implementing
1155         4-iterator overloads of std::equal for use in C++11.
1156         (equal(It1, It1, It2, It2), equal(It1, It1, It2, It2, BinaryPred)):
1157         Move function bodies to new __equal4 functions.
1158         * testsuite/28_regex/simple_c++11.cc: New.
1160         PR libstdc++/82254
1161         * include/std/type_traits (__is_invocable): Add partial specialization
1162         for INVOKE<void> case and remove is_void<R> check from partial
1163         specialization for INVOKE<R> case.
1164         (__is_nt_invocable_impl): New helper for is_nothrow_invocable_r.
1165         (is_nothrow_invocable_r): Use __is_nt_invocable_impl.
1166         * testsuite/20_util/is_nothrow_invocable/value.cc: Add tests for
1167         conversions that can throw or fail to convert. Use static assert
1168         strings to explain negative results.
1169         * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Use
1170         is_nothrow_constructible in is_nt_invocable_conv.
1172 2017-09-18  Jonathan Wakely  <jwakely@redhat.com>
1174         PR libstdc++/81468
1175         * testsuite/20_util/duration/cons/dr1177.cc: Fix incorrect test and
1176         improve static assertion messages.
1178         * include/std/utility (_Itup_cat, _Make_integer_sequence): Remove.
1179         (_Build_index_tuple, make_integer_sequence): Use built-in to generate
1180         pack expansion.
1182         PR libstdc++/71187
1183         * include/std/type_traits (__declval): New function to deduce return
1184         type of declval.
1185         (__declval_protector::_delegate): Remove.
1186         (declval): Use __declval instead of add_rvalue_reference and
1187         __declval_protector::__delegate.
1188         * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
1189         lineno.
1190         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
1191         Likewise.
1192         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
1193         Likewise.
1195 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
1197         * testsuite/libstdc++-prettyprinters/cxx17.cc: Use -std=c++17 or
1198         -std=gnu++17 instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead
1199         of c++1z and c++17_only instead of c++1z_only.  Adjust expected
1200         diagnostics and comments refering to 1z to 17.
1201         * testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
1202         * testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
1203         * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
1204         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
1205         * testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
1206         Likewise.
1207         * testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
1208         * testsuite/18_support/launder/1.cc (test02): Likewise.
1209         * testsuite/18_support/launder/requirements_neg.cc: Likewise.
1210         * testsuite/18_support/launder/requirements.cc: Likewise.
1211         * testsuite/18_support/byte/requirements.cc: Likewise.
1212         * testsuite/18_support/byte/ops.cc: Likewise.
1213         * testsuite/18_support/byte/global_neg.cc: Likewise.
1214         * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
1215         Likewise.
1216         * testsuite/27_io/types/4.cc: Likewise.
1217         * testsuite/25_algorithms/sample/81221.cc: Likewise.
1218         * testsuite/25_algorithms/sample/1.cc: Likewise.
1219         * testsuite/25_algorithms/sample/2.cc: Likewise.
1220         * testsuite/25_algorithms/search/searcher.cc: Likewise.
1221         * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
1222         * testsuite/experimental/filesystem/path/construct/string_view.cc:
1223         Likewise.
1224         * testsuite/24_iterators/range_access_cpp17.cc: Likewise.
1225         * testsuite/24_iterators/container_access.cc: Likewise.
1226         * testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
1227         * testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
1228         * testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
1229         * testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
1230         * testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
1231         * testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
1232         * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
1233         * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
1234         * testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
1235         * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
1236         * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
1237         * testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
1238         * testsuite/20_util/shared_ptr/observers/array.cc (struct A): Likewise.
1239         * testsuite/20_util/pair/cons/deduction.cc: Likewise.
1240         * testsuite/20_util/variant/deduction.cc: Likewise.
1241         * testsuite/20_util/tuple/78939.cc: Likewise.
1242         * testsuite/20_util/tuple/cons/deduction.cc: Likewise.
1243         * testsuite/20_util/void_t/1.cc: Likewise.
1244         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Likewise.
1245         * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
1246         * testsuite/20_util/addressof/requirements/constexpr.cc: Likewise.
1247         * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
1248         * testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
1249         Likewise.
1250         * testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
1251         Likewise.
1252         * testsuite/20_util/has_unique_object_representations/value.cc:
1253         Likewise.
1254         * testsuite/20_util/time_point/arithmetic/constexpr.cc: Likewise.
1255         * testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
1256         * testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
1257         * testsuite/20_util/function/cons/deduction.cc: Likewise.
1258         * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
1259         Likewise.
1260         * testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
1261         * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
1262         Likewise.
1263         * testsuite/20_util/is_aggregate/value.cc: Likewise.
1264         * testsuite/26_numerics/lcm/1.cc: Likewise.
1265         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1266         * testsuite/26_numerics/gcd/1.cc: Likewise.
1267         * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
1268         * testsuite/26_numerics/valarray/deduction.cc: Likewise.
1269         * testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
1270         * testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
1271         * testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
1272         Likewise.
1273         * testsuite/23_containers/array/cons/deduction.cc: Likewise.
1274         * testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
1275         * testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
1276         Likewise.
1277         * testsuite/23_containers/deque/cons/deduction.cc: Likewise.
1278         * testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
1279         Likewise.
1280         * testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
1281         Likewise.
1282         * testsuite/23_containers/list/cons/deduction.cc: Likewise.
1283         * testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
1284         Likewise.
1285         * testsuite/23_containers/forward_list/cons/deduction.cc: Likewise.
1286         * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Likewise.
1287         * testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
1288         Likewise.
1289         * testsuite/23_containers/vector/cons/deduction.cc: Likewise.
1290         * testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
1291         Likewise.
1292         * testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
1293         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Likewise.
1294         * testsuite/21_strings/basic_string/cons/char/79162.cc: Likewise.
1295         * testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
1296         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
1297         Likewise.
1298         * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: Likewise.
1299         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
1300         Likewise.
1301         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
1302         Likewise.
1303         * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
1304         Likewise.
1305         * testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
1306         Likewise.
1307         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
1308         Likewise.
1309         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
1310         Likewise.
1312 2017-09-13  Jonathan Wakely  <jwakely@redhat.com>
1314         PR libstdc++/81468
1315         * include/std/chrono (__enable_if_is_duration)
1316         (__disable_if_is_duration): New alias templates to simplify SFINAE.
1317         (duration_cast, floor, ceil): Use __enable_if_is_duration.
1318         (duration::__is_float, duration::__is_harmonic): New alias templates
1319         to simplify SFINAE.
1320         (duration::duration(const _Rep2&)): Use _Require, __is_float and
1321         __is_harmonic.
1322         (duration::duration(const duration<_Rep2, _Period2>&)): Likewise.
1323         (__common_rep_type): Remove, replace with ...
1324         (__common_rep_t): New alias template.
1325         (operator*, operator/, operator%): Use __common_rep_t and
1326         __disable_if_is_duration.
1327         (time_point::time_point(const time_point<clock, _Dur2>&)): Add missing
1328         constraint from LWG DR 1177.
1329         * testsuite/20_util/duration/cons/dr1177.cc: New.
1330         * testsuite/20_util/duration/literals/range.cc: Update dg-error line.
1331         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
1332         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
1333         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
1334         * testsuite/20_util/time_point/cons/81468.cc: New.
1336         * doc/doxygen/mainpage.html: Fix broken URLs.
1338         PR libstdc++/81835
1339         * doc/xml/manual/extensions.xml: Replace unstable URL.
1340         * doc/html/manual/ext_demangling.html: Regenerate.
1341         * libsupc++/cxxabi.h (__cxa_demangle): Fix broken URL.
1343         * include/bits/allocated_ptr.h (__allocated_ptr::get): Use
1344         __to_address.
1345         (__allocated_ptr::_S_raw_ptr): Remove.
1346         * include/bits/forward_list.h (_Fwd_list_base::_M_get_node): Use
1347         __to_address.
1348         * include/bits/hashtable_policy.h (_Hashtable_alloc): Likewise.
1349         * include/bits/ptr_traits.h (__to_address): Define new function
1350         template.
1351         * include/bits/shared_ptr_base.h (__shared_ptr): Use __to_address.
1352         (__shared_ptr::_S_raw_ptr): Remove.
1353         * include/bits/stl_vector.h [__cplusplus >= 201103L]
1354         (vector::_M_data_ptr): Use __to_address.
1355         [__cplusplus < 201103L] (vector::_M_data_ptr): Don't dereference
1356         possibly invalid pointers.
1357         * include/ext/alloc_traits.h (__alloc_traits::construct)
1358         (__alloc_traits::destroy): Use __to_address.
1360 2017-09-12  Jonathan Wakely  <jwakely@redhat.com>
1362         PR libstdc++/79433
1363         * include/Makefile.am: Remove <bits/c++14_warning.h>.
1364         * include/Makefile.in: Regenerate.
1365         * include/bits/c++14_warning.h: Remove.
1366         * include/experimental/algorithm: Do not include <c++14_warning.h>.
1367         * include/experimental/any: Likewise.
1368         * include/experimental/array: Likewise.
1369         * include/experimental/bits/erase_if.h: Likewise.
1370         * include/experimental/bits/lfts_config.h: Likewise.
1371         * include/experimental/bits/shared_ptr.h: Likewise.
1372         * include/experimental/bits/string_view.tcc: Likewise.
1373         * include/experimental/chrono: Likewise.
1374         * include/experimental/deque: Likewise.
1375         * include/experimental/filesystem: Do not include <c++0x_warning.h>.
1376         * include/experimental/forward_list: Do not include <c++14_warning.h>.
1377         * include/experimental/functional: Likewise.
1378         * include/experimental/iterator: Likewise.
1379         * include/experimental/list: Likewise.
1380         * include/experimental/map: Likewise.
1381         * include/experimental/memory: Likewise.
1382         * include/experimental/numeric: Likewise.
1383         * include/experimental/optional: Likewise.
1384         * include/experimental/propagate_const: Likewise.
1385         * include/experimental/ratio: Likewise.
1386         * include/experimental/regex: Likewise.
1387         * include/experimental/set: Likewise.
1388         * include/experimental/string: Likewise.
1389         * include/experimental/string_view: Likewise.
1390         * include/experimental/system_error: Likewise.
1391         * include/experimental/tuple: Likewise.
1392         * include/experimental/type_traits: Likewise.
1393         * include/experimental/unordered_map: Likewise.
1394         * include/experimental/unordered_set: Likewise.
1395         * include/experimental/vector: Likewise.
1396         * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error
1397         line number.
1398         * testsuite/experimental/array/neg.cc: Likewise.
1399         * testsuite/experimental/propagate_const/assignment/move_neg.cc:
1400         Likewise.
1401         * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
1402         * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
1403         * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
1404         * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
1405         * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
1407         PR libstdc++/79433
1408         * doc/xml/manual/status_cxx2017.xml: Update feature-test macros.
1409         * doc/html/*: Regenerate.
1410         * include/Makefile.am: Remove <bits/c++17_warning.h>.
1411         * include/Makefile.in: Regenerate.
1412         * include/bits/c++17_warning.h: Remove.
1413         * include/bits/string_view.tcc: Do not include <bits/c++17_warning.h>
1414         for pre-C++17 modes.
1415         * include/std/any: Likewise.
1416         (__cpp_lib_any): Define.
1417         * include/std/mutex (__cpp_lib_scoped_lock): Adjust value as per new
1418         SD-6 draft.
1419         * include/std/numeric (__cpp_lib_gcd_lcm): Define as per new SD-6
1420         draft.
1421         * include/std/optional: Do not include <bits/c++17_warning.h>.
1422         (__cpp_lib_optional): Define.
1423         * include/std/shared_mutex: Do not include <bits/c++14_warning.h>.
1424         * include/std/string_view: Do not include <bits/c++17_warning.h>.
1425         (__cpp_lib_string_view): Define.
1426         * include/std/variant: Do not include <bits/c++17_warning.h>.
1427         (__cpp_lib_variant): Define.
1428         * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error line
1429         numbers.
1430         * testsuite/26_numerics/gcd/1.cc: Test for __cpp_lib_gcd_lcm.
1431         * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line
1432         numbers.
1433         * testsuite/26_numerics/lcm/1.cc: Test for __cpp_lib_gcd_lcm.
1434         * testsuite/26_numerics/lcm/lcm_neg.cc: Adjust dg-error line
1435         numbers.
1436         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Adjust
1437         expected value of __cpp_lib_scoped_lock.
1439         PR libstdc++/70483
1440         * include/experimental/bits/string_view.tcc (basic_string_view::find)
1441         (basic_string_view::rfind, basic_string_view::find_first_of)
1442         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
1443         (basic_string_view::find_last_not_of): Add constexpr specifier.
1444         * include/experimental/string_view (basic_string_view::remove_prefix)
1445         (basic_string_view::remove_suffix, basic_string_view::swap)
1446         (basic_string_view::compare, basic_string_view::find)
1447         (basic_string_view::rfind, basic_string_view::find_first_of)
1448         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
1449         (basic_string_view::find_last_not_of, operator==, operator!=)
1450         (operator<, operator>, operator<=, operator>=): Likewise.
1451         * testsuite/experimental/string_view/operations/compare/char/70483.cc:
1452         New.
1454 2017-09-11  Jonathan Wakely  <jwakely@redhat.com>
1456         PR libstdc++/70483
1457         * include/bits/string_view.tcc (basic_string_view::find)
1458         (basic_string_view::rfind, basic_string_view::find_first_of)
1459         (basic_string_view::find_last_of, basic_string_view::find_first_not_of)
1460         (basic_string_view::find_last_not_of): Add constexpr specifier.
1461         * include/std/string_view (basic_string_view::operator=)
1462         (basic_string_view::rbegin, basic_string_view::rend)
1463         (basic_string_view::crbegin, basic_string_view::crend)
1464         (basic_string_view::remove_prefix, basic_string_view::remove_suffix)
1465         (basic_string_view::swap, basic_string_view::compare)
1466         (basic_string_view::find, basic_string_view::rfind)
1467         (basic_string_view::find_first_of, basic_string_view::find_last_of)
1468         (basic_string_view::find_first_not_of)
1469         (basic_string_view::find_last_not_of, basic_string_view::_M_check)
1470         (basic_string_view::_M_limit, operator==, operator!=, operator<)
1471         (operator>, operator<=, operator>=): Likewise.
1472         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
1473         char/1.cc: Repeat tests in constexpr context.
1474         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
1475         wchar_t/1.cc: Likewise.
1476         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
1477         char/1.cc: Likewise.
1478         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
1479         wchar_t/1.cc: Likewise.
1480         * testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
1481         Likewise.
1482         * testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
1483         Likewise.
1484         * testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
1485         Likewise.
1486         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
1487         Likewise.
1488         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
1489         Likewise.
1490         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
1491         Likewise.
1492         * testsuite/21_strings/basic_string_view/operators/char/2.cc:
1493         Likewise.
1494         * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
1495         Likewise.
1496         * testsuite/21_strings/basic_string_view/range_access/char/1.cc: Test
1497         cbegin, cend, rbegin, rend, crbegin and crend.
1498         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
1499         Likewise.
1500         * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
1501         Remove trailing whitespace.
1502         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
1503         1.cc: Likewise.
1504         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
1505         New.
1506         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
1507         New.
1508         * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
1509         New.
1510         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
1511         2.cc: New.
1513 2017-09-11  Tim Shen  <timshen@google.com>
1515         PR libstdc++/71500
1516         * include/bits/regex_executor.tcc: Support icase in regex_traits<...>
1517         for back reference matches.
1518         * testsuite/28_regex/regression.cc: Test case.
1520 2017-09-11  Jonathan Wakely  <jwakely@redhat.com>
1522         * testsuite/21_strings/basic_string/lwg2946.cc: Adjust for
1523         compatibility with old COW std::string.
1525 2017-09-09  Gerald Pfeifer  <gerald@pfeifer.com>
1527         * doc/xml/manual/allocator.xml: Adjust link for Hoard.
1528         * doc/html/manual/memory.html: Regenerate.
1530 2017-09-04  Daniel Kruegler  <daniel.kruegler@gmail.com>
1532         PR libstdc++/79162
1533         Implement LWG 2946, LWG 2758's resolution missed further corrections
1534         * include/bits/basic_string.h (basic_string::compare): Add missing
1535         required noexcept specifications.
1536         (basic_string): Introduce internal _S_to_string_view and __sv_wrapper
1537         for implicit string_view conversion.
1538         (basic_string::basic_string): Fix explicit string_view conversion by
1539         implicit conversion using _S_to_string_view and __sv_wrapper.
1540         (basic_string): Introduce internal basic_string(__sv_wrapper, Alloc)
1541         constructor.
1542         (basic_string): Fix operator=(T) template by operator=(const T&)
1543         template for uncopyable types (PR 79162).
1544         (basic_string::operator+=, basic_string::append, basic_string::assign)
1545         (basic_string::insert, basic_string::replace, basic_string::find)
1546         (basic_string::rfind, basic_string::find_first_of)
1547         (basic_string::find_last_of, basic_string::find_first_not_of)
1548         (basic_string::find_last_not_of, basic_string::compare): Replace
1549         __sv_type argument by template const T& (LWG 2946) and correct
1550         documentation describing __sv_type argument.
1551         (basic_string::find, basic_string::rfind, basic_string::find_first_of)
1552         (basic_string::find_last_of, basic_string::find_first_not_of)
1553         (basic_string::find_last_not_of, basic_string::compare): Replace
1554         unconditional noexcept specification by conditional noexcept
1555         specification to partially balance the removal of noexcept by LWG 2946.
1556         * testsuite/21_strings/basic_string/79162.cc: New.
1557         * testsuite/21_strings/basic_string/lwg2946.cc: New.
1559 2017-08-31  Jonathan Wakely  <jwakely@redhat.com>
1561         PR c++/82039
1562         * include/ext/new_allocator.h (__gnu_cxx::new_allocator::allocate):
1563         Adjust null pointer constant to avoid warning.
1565 2017-08-24  François Dumont  <fdumont@gcc.gnu.org>
1567         * include/bits/stl_list.h
1568         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_S_distance): Remove.
1569         (_List_impl(_Node_alloc_type&&, _List_impl&&)): New.
1570         (_List_base(_Node_alloc_type&&, _List_base&&)): New, use latter.
1571         [!_GLIBCXX_INLINE_VERSION](_List_base(_Node_alloc_type&&,_List_base&&)):
1572         Remove.
1573         (_List_base(_Node_alloc_type&&)): New.
1574         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_distance): Remove.
1575         [!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_node_count): Remove.
1576         (list<>::_M_node_count): New.
1577         (list<>::size()): Adapt to call latter.
1578         (list<>::_S_distance(const_iterator, const_iterator)): New.
1579         (list<>::splice(iterator, list&, const_iterator, const_iterator)):
1580         Adapt to call latter.
1581         (list(list&&, const allocator_type&, true_type)): New.
1582         (list(list&&, const allocator_type&, false_type)): New.
1583         (list(list&&, const allocator_type&)): Adapt to call latters.
1585 2017-08-21  Jonathan Wakely  <jwakely@redhat.com>
1587         PR libstdc++/81912
1588         * include/bits/stl_iterator_base_types.h (__iterator_category): Add
1589         constexpr for C++11 and later.
1590         * testsuite/24_iterators/container_access.cc: Add target selector.
1591         * testsuite/24_iterators/range_access.cc: Fix clause number in
1592         comment.
1593         * testsuite/24_iterators/range_access_cpp14.cc: Likewise.
1594         * testsuite/24_iterators/range_access_cpp17.cc: New.
1596 2017-08-21  Richard Biener  <rguenther@suse.de>
1598         * testsuite/libstdc++-prettyprinters/prettyprinters.exp: Run all
1599         tests with -flto as well if supported.
1601 2017-08-20  Martin Sebor  <msebor@redhat.com>
1603         PR c/81854
1604         * src/c++98/compatibility.cc (_GLIBCXX_3_4_SYMVER): Declare alias
1605         target as a C++ function with no prototype.
1606         (_GLIBCXX_3_4_5_SYMVER): Ditto.
1608 2017-08-20  John David Anglin  <danglin@gcc.gnu.org>
1610         PR testsuite/81056
1611         * testsuite/17_intro/names.cc: Undef 'd' and 'r' on __hpux__.
1613 2017-08-18  Jonathan Wakely  <jwakely@redhat.com>
1615         * include/bits/hashtable_policy.h (_ReuseOrAllocNode): Remove
1616         __value_alloc_type and __value_alloc_traits typedefs.
1617         (_ReuseOrAllocNode::operator()): Call construct and destroy on the
1618         node allocator.
1619         (_Hashtable_alloc): Simplify __value_alloc_traits typedef.
1620         (_Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&...)): Call
1621         construct on the node allocator.
1622         (_Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_type*)): Call
1623         destroy on the node allocator.
1625         PR libstdc++/81891
1626         * include/bits/hashtable.h (_Hashtable(_InputIterator, _InputIterator,
1627         size_type, const _H1&, const _H2&, const _Hash&, const _Equal&,
1628         const _ExtractKey&, const allocator_type&)): Let destructor do clean
1629         up if an exception is thrown.
1630         * testsuite/23_containers/unordered_map/cons/81891.cc: New.
1632 2017-08-11  Jonathan Wakely  <jwakely@redhat.com>
1634         PR libstdc++/81808
1635         * testsuite/27_io/basic_fstream/53984.cc: Adjust test for targets
1636         that allow opening a directory as a FILE and reading from it.
1638 2017-08-09  Jonathan Wakely  <jwakely@redhat.com>
1640         * include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP):
1641         Replace with _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP and use
1642         __is_identifier to set it.
1644 2017-08-09  Katsuhiko Nishimra  <ktns.87@gmail.com>
1646         * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Use
1647         __is_identifier instead of __has_builtin.
1649 2017-08-09  Jonathan Wakely  <jwakely@redhat.com>
1651         PR libstdc++/79820
1652         PR libstdc++/81751
1653         * config/io/basic_file_stdio.cc (sys_open(FILE*, ios_base::openmode)):
1654         Call fflush on the stream instead of calling sync() while _M_cfile is
1655         null. Restore original value of errno.
1656         * testsuite/ext/stdio_filebuf/char/79820.cc: New.
1657         * testsuite/ext/stdio_filebuf/char/81751.cc: New.
1659 2017-07-31  Marek Polacek  <polacek@redhat.com>
1661         PR libstdc++/81599
1662         * include/bits/stl_stack.h: Fix typo.
1664 2017-07-26  Jonathan Wakely  <jwakely@redhat.com>
1666         * testsuite/27_io/basic_fstream/53984.cc: Fix test.
1668 2017-07-26  Paolo Carlini  <paolo.carlini@oracle.com>
1670         * testsuite/27_io/basic_fstream/53984.cc: Fix typo in dg-require
1671         directive.
1673 2017-07-25  Jonathan Wakely  <jwakely@redhat.com>
1675         PR libstdc++/53984
1676         * include/bits/basic_ios.h (basic_ios::_M_setstate): Adjust comment.
1677         * include/bits/istream.tcc (basic_istream::sentry): Handle exceptions
1678         during construction.
1679         * include/std/istream: Adjust comments for formatted input functions
1680         and unformatted input functions.
1681         * testsuite/27_io/basic_fstream/53984.cc: New.
1682         * testsuite/27_io/basic_istream/sentry/char/53984.cc: New.
1684         * include/bits/ios_base.h (ios_base::io_state, ios_base::open_mode)
1685         (ios_base::seek_dir): Remove for C++17.
1686         * include/std/streambuf (basic_streambuf::stossc): Remove for C++17.
1687         Add deprecated attribute for C++11 and C++14.
1688         * testsuite/27_io/types/1.cc: Don't run for C++17 and later.
1689         * testsuite/27_io/types/4.cc: New.
1691 2017-07-23  Michael Collison  <michael.collison@arm.com>
1693         Add optimized implementation of mersenne twister for aarch64
1694         * config/cpu/aarch64/opt/ext/opt_random.h: New file.
1695         (__arch64_recursion): New function.
1696         (__aarch64_lsr_128): New function.
1697         (__aarch64_lsl_128): New function.
1698         (operator==): New function.
1699         (simd_fast_mersenne_twister_engine): Implement
1700         method _M_gen_rand.
1701         * config/cpu/aarch64/opt/bits/opt_random.h: New file.
1702         * include/ext/random: (simd_fast_mersenne_twister_engine):
1703         add _M_state private array.
1705 2017-07-23  François Dumont  <fdumont@gcc.gnu.org>
1707         PR libstdc++/81064
1708         * include/bits/algorithmfwd.h: Reorganize versioned namespace.
1709         * include/bits/basic_string.h: Likewise.
1710         * include/bits/c++config: Likewise.
1711         * include/bits/deque.tcc: Likewise.
1712         * include/bits/forward_list.h: Likewise.
1713         * include/bits/forward_list.tcc: Likewise.
1714         * include/bits/hashtable_policy.h: Likewise.
1715         * include/bits/list.tcc: Likewise.
1716         * include/bits/move.h: Likewise.
1717         * include/bits/quoted_string.h: Likewise.
1718         * include/bits/random.h: Likewise.
1719         * include/bits/random.tcc: Likewise.
1720         * include/bits/regex.h: Likewise.
1721         * include/bits/regex.tcc: Likewise.
1722         * include/bits/regex_automaton.h: Likewise.
1723         * include/bits/regex_automaton.tcc: Likewise.
1724         * include/bits/regex_compiler.h: Likewise.
1725         * include/bits/regex_compiler.tcc: Likewise.
1726         * include/bits/regex_constants.h: Likewise.
1727         * include/bits/regex_error.h: Likewise.
1728         * include/bits/regex_executor.h: Likewise.
1729         * include/bits/regex_executor.tcc: Likewise.
1730         * include/bits/regex_scanner.h: Likewise.
1731         * include/bits/regex_scanner.tcc: Likewise.
1732         * include/bits/specfun.h: Likewise.
1733         * include/bits/stl_algo.h: Likewise.
1734         * include/bits/stl_algobase.h: Likewise.
1735         * include/bits/stl_bvector.h: Likewise.
1736         * include/bits/stl_deque.h: Likewise.
1737         * include/bits/stl_iterator.h: Likewise.
1738         * include/bits/stl_iterator_base_funcs.h: Likewise.
1739         * include/bits/stl_list.h: Likewise.
1740         * include/bits/stl_map.h: Likewise.
1741         * include/bits/stl_multimap.h: Likewise.
1742         * include/bits/stl_multiset.h: Likewise.
1743         * include/bits/stl_relops.h: Likewise.
1744         * include/bits/stl_set.h: Likewise.
1745         * include/bits/stl_vector.h: Likewise.
1746         * include/bits/uniform_int_dist.h: Likewise.
1747         * include/bits/unordered_map.h: Likewise.
1748         * include/bits/unordered_set.h: Likewise.
1749         * include/bits/vector.tcc: Likewise.
1750         * include/c_global/cmath: Likewise.
1751         * include/c_std/cmath: Likewise.
1752         * include/decimal/decimal: Likewise.
1753         * include/decimal/decimal.h: Likewise.
1754         * include/experimental/algorithm: Likewise.
1755         * include/experimental/any: Likewise.
1756         * include/experimental/array: Likewise.
1757         * include/experimental/bits/erase_if.h: Likewise.
1758         * include/experimental/bits/fs_dir.h: Likewise.
1759         * include/experimental/bits/fs_fwd.h: Likewise.
1760         * include/experimental/bits/fs_ops.h: Likewise.
1761         * include/experimental/bits/fs_path.h: Likewise.
1762         * include/experimental/bits/lfts_config.h: Likewise.
1763         * include/experimental/bits/shared_ptr.h: Likewise.
1764         * include/experimental/bits/string_view.tcc: Likewise.
1765         * include/experimental/chrono: Likewise.
1766         * include/experimental/deque: Likewise.
1767         * include/experimental/filesystem: Likewise.
1768         * include/experimental/forward_list: Likewise.
1769         * include/experimental/functional: Likewise.
1770         * include/experimental/iterator: Likewise.
1771         * include/experimental/list: Likewise.
1772         * include/experimental/map: Likewise.
1773         * include/experimental/memory: Likewise.
1774         * include/experimental/memory_resource: Likewise.
1775         * include/experimental/numeric: Likewise.
1776         * include/experimental/optional: Likewise.
1777         * include/experimental/propagate_const: Likewise.
1778         * include/experimental/random: Likewise.
1779         * include/experimental/ratio: Likewise.
1780         * include/experimental/regex: Likewise.
1781         * include/experimental/set: Likewise.
1782         * include/experimental/source_location: Likewise.
1783         * include/experimental/string: Likewise.
1784         * include/experimental/string_view: Likewise.
1785         * include/experimental/system_error: Likewise.
1786         * include/experimental/tuple: Likewise.
1787         * include/experimental/type_traits: Likewise.
1788         * include/experimental/unordered_map: Likewise.
1789         * include/experimental/unordered_set: Likewise.
1790         * include/experimental/utility: Likewise.
1791         * include/experimental/vector: Likewise.
1792         * include/ext/bitmap_allocator.h: Likewise.
1793         * include/ext/codecvt_specializations.h: Likewise.
1794         * include/ext/rope: Likewise.
1795         * include/ext/typelist.h: Likewise.
1796         * include/std/chrono: Likewise.
1797         * include/std/complex: Likewise.
1798         * include/std/functional: Likewise.
1799         * include/std/numeric: Likewise.
1800         * include/std/string_view: Likewise.
1801         * include/std/thread: Likewise.
1802         * include/std/variant: Likewise.
1803         * include/tr1/array: Likewise.
1804         * include/tr1/bessel_function.tcc: Likewise.
1805         * include/tr1/beta_function.tcc: Likewise.
1806         * include/tr1/cmath: Likewise.
1807         * include/tr1/complex: Likewise.
1808         * include/tr1/ell_integral.tcc: Likewise.
1809         * include/tr1/exp_integral.tcc: Likewise.
1810         * include/tr1/functional: Likewise.
1811         * include/tr1/functional_hash.h: Likewise.
1812         * include/tr1/gamma.tcc: Likewise.
1813         * include/tr1/hashtable.h: Likewise.
1814         * include/tr1/hashtable_policy.h: Likewise.
1815         * include/tr1/hypergeometric.tcc: Likewise.
1816         * include/tr1/legendre_function.tcc: Likewise.
1817         * include/tr1/modified_bessel_func.tcc: Likewise.
1818         * include/tr1/poly_hermite.tcc: Likewise.
1819         * include/tr1/poly_laguerre.tcc: Likewise.
1820         * include/tr1/random.h: Likewise.
1821         * include/tr1/random.tcc: Likewise.
1822         * include/tr1/regex: Likewise.
1823         * include/tr1/riemann_zeta.tcc: Likewise.
1824         * include/tr1/shared_ptr.h: Likewise.
1825         * include/tr1/special_function_util.h: Likewise.
1826         * include/tr1/tuple: Likewise.
1827         * include/tr1/type_traits: Likewise.
1828         * include/tr1/unordered_map.h: Likewise.
1829         * include/tr1/unordered_set.h: Likewise.
1830         * include/tr1/utility: Likewise.
1831         * include/tr2/bool_set: Likewise.
1832         * include/tr2/bool_set.tcc: Likewise.
1833         * include/tr2/dynamic_bitset: Likewise.
1834         * include/tr2/dynamic_bitset.tcc: Likewise.
1835         * include/tr2/ratio: Likewise.
1836         * include/tr2/type_traits: Likewise.
1837         * src/c++11/chrono.cc: Likewise.
1838         * src/c++11/compatibility-c++0x.cc: Likewise.
1839         * src/c++11/compatibility-chrono.cc: Likewise.
1840         * src/c++11/cxx11-shim_facets.cc: Likewise.
1841         * src/c++11/hashtable_c++0x.cc: Likewise.
1842         * src/c++11/placeholders.cc: Likewise.
1843         * src/c++11/thread.cc: Likewise.
1844         * src/c++98/bitmap_allocator.cc: Likewise.
1845         * src/c++98/hashtable_tr1.cc: Likewise.
1846         * src/c++98/list.cc: Likewise.
1847         * src/shared/hashtable-aux.cc: Likewise.
1848         * testsuite/20_util/duration/literals/range.cc: Adapt line number.
1849         * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
1850         * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
1851         * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
1852         * testsuite/20_util/forward/c_neg.cc: Likewise.
1853         * testsuite/20_util/forward/f_neg.cc: Likewise.
1854         * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
1855         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1856         * testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
1857         * python/libstdcxx/v6/printers.py: Adapt.
1859 2017-07-20  Jonathan Wakely  <jwakely@redhat.com>
1861         * config/allocator/malloc_allocator_base.h [__SANITIZE_ADDRESS__]
1862         (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define.
1863         * config/allocator/new_allocator_base.h [__SANITIZE_ADDRESS__]
1864         (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define.
1865         * doc/xml/manual/using.xml (_GLIBCXX_SANITIZE_VECTOR): Document macro.
1866         * include/bits/stl_vector.h [_GLIBCXX_SANITIZE_VECTOR]
1867         (_Vector_impl::_Asan, _Vector_impl::_Asan::_Reinit)
1868         (_Vector_impl::_Asan::_Grow, _GLIBCXX_ASAN_ANNOTATE_REINIT)
1869         (_GLIBCXX_ASAN_ANNOTATE_GROW, _GLIBCXX_ASAN_ANNOTATE_GREW)
1870         (_GLIBCXX_ASAN_ANNOTATE_SHRINK, _GLIBCXX_ASAN_ANNOTATE_BEFORE_DEALLOC):
1871         Define annotation helper types and macros.
1872         (vector::~vector, vector::push_back, vector::pop_back)
1873         (vector::_M_erase_at_end): Add annotations.
1874         * include/bits/vector.tcc (vector::reserve, vector::emplace_back)
1875         (vector::insert, vector::_M_erase, vector::operator=)
1876         (vector::_M_fill_assign, vector::_M_assign_aux)
1877         (vector::_M_insert_rval, vector::_M_emplace_aux)
1878         (vector::_M_insert_aux, vector::_M_realloc_insert)
1879         (vector::_M_fill_insert, vector::_M_default_append)
1880         (vector::_M_shrink_to_fit, vector::_M_range_insert): Annotate.
1882 2017-07-19  Jonathan Wakely  <jwakely@redhat.com>
1884         PR libstdc++/81476
1885         * include/bits/vector.tcc (vector::_M_range_insert<_InputIterator>):
1886         Only insert elements one-by-one when inserting at the end.
1887         * testsuite/performance/23_containers/insert/81476.cc: New.
1889 2017-07-19  Volker Reichelt  <v.reichelt@netcologne.de>
1891         * libsupc++/new (bad_array_new_length): Remove redundant
1892         semicolon after in-class member function definition.
1893         * include/bits/locale_facets.h (ctype_byname, num_put): Likewise.
1894         * include/bits/locale_facets_nonio.h (time_put_byname): Likewise.
1895         * include/bits/random.h (mersenne_twister_engine): Likewise.
1896         * include/tr1/random.h (mersenne_twister): Likewise
1897         * include/ext/random (simd_fast_mersenne_twister_engine): Likewise.
1898         * include/ext/rope (char_producer, _Rope_char_consumer,
1899         _Rope_self_destruct_ptr, _Rope_const_iterator, _Rope_iterator):
1900         Likewise.
1901         * include/ext/ropeimpl.h (_Rope_flatten_char_consumer,
1902         _Rope_insert_char_consumer): Likewise.
1904 2017-07-19  Jonathan Wakely  <jwakely@redhat.com>
1906         * include/bits/fstream.tcc (basic_filebuf::xsgetn)
1907         (basic_filebuf::xsputn, basic_filebuf::seekoff): Fix indentation.
1909         * testsuite/util/testsuite_iterators.h: Fix indentation.
1911         * testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: Add dg-require.
1913 2017-07-18  Jonathan Wakely  <jwakely@redhat.com>
1915         PR libstdc++/81395
1916         * include/bits/fstream.tcc (basic_filebuf::xsgetn): Don't set buffer
1917         pointers for write mode after reading.
1918         * testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: New.
1920 2017-07-18  François Dumont  <fdumont@gcc.gnu.org>
1922         * include/bits/stl_list.h
1923         (struct _List_node_header): New.
1924         (_List_impl()): Fix noexcept qualification.
1925         (_List_impl(_List_impl&&)): New, default.
1926         (_List_base()): Default.
1927         (_List_base(_List_base&&)): Default.
1928         (_List_base::_M_move_nodes): Adapt to use
1929         _List_node_header._M_move_nodes.
1930         (_List_base::_M_init): Likewise.
1931         (list<>()): Default.
1932         (list<>(list&&)): Default.
1933         (list<>::_M_move_assign(list&&, true_type)): Use _M_move_nodes.
1934         (__distance(_List_const_iterator<>, _List_const_iterator<>,
1935         input_iterator_tag)): Adapt.
1936         * testsuite/23_containers/list/allocator/default_init.cc: New.
1938 2017-07-15  Jonathan Wakely  <jwakely@redhat.com>
1940         * include/std/mutex (scoped_lock): Reorder std::adopt_lock_t parameter
1941         as per P0739R0.
1942         * testsuite/30_threads/scoped_lock/cons/1.cc: Reorder arguments.
1943         * testsuite/30_threads/scoped_lock/cons/deduction.cc: Test deduction
1944         with std::adopt_lock_t.
1945         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Check
1946         feature-test macro.
1948 2017-07-14  Jason Merrill  <jason@redhat.com>
1949             Jonathan Wakely  <jwakely@redhat.com>
1951         * include/std/variant (variant::variant(_Tp&&)): Constrain to remove
1952         the constructor for empty variants from the candidate functions
1953         during class template argument deduction.
1954         * testsuite/20_util/variant/deduction.cc: New.
1956 2017-07-11  Jonathan Wakely  <jwakely@redhat.com>
1958         * doc/xml/faq.xml: Update several old entries. Improve
1959         cross-references.
1960         * doc/xml/manual/intro.xml: Add anchors to each DR.
1961         * doc/html/*: Regenerate.
1963 2017-07-10  Jonathan Wakely  <jwakely@redhat.com>
1965         * testsuite/abi/pr42230.cc: Add header for std::free.
1967         PR libstdc++/81381
1968         * include/bits/sstream.tcc (basic_stringbuf::overflow)
1969         (basic_stringbuf::basic_stringbuf(const __string_type&, ios::mode))
1970         (basic_stringbuf::str()): Construct new strings with an allocator.
1971         * testsuite/27_io/basic_stringbuf/cons/81381.cc: New.
1973         PR libstdc++/81338
1974         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string):
1975         Declare basic_stringbuf to be a friend.
1976         * include/bits/sstream.tcc (basic_stringbuf::overflow)
1977         [_GLIBCXX_USE_CXX11_ABI]: Use unused capacity before reallocating.
1978         * include/std/sstream (basic_stringbuf::__xfer_bufptrs): Update string
1979         length to buffer length.
1980         * testsuite/27_io/basic_stringstream/assign/81338.cc: New.
1982 2017-07-06  Jonathan Wakely  <jwakely@redhat.com>
1984         * testsuite/20_util/specialized_algorithms/memory_management_tools/
1985         1.cc: Free memory.
1986         * testsuite/22_locale/locale/cons/5.cc: Remove redundant restoration
1987         of original environment and free memory.
1989         * testsuite/abi/pr42230.cc: Free memory.
1990         * testsuite/util/testsuite_abi.cc (demangle): Return std::string
1991         instead of pointer that might need freeing.
1992         * testsuite/util/testsuite_abi.h (demangle): Likewise.
1993         * testsuite/util/testsuite_hooks.cc (verify_demangle): Free memory.
1995         * include/bits/uses_allocator.h (__use_alloc(const _Alloc&&)): Add
1996         deleted overload to prevent dangling references to rvalues.
1997         * include/experimental/memory_resource
1998         (polymorphic_allocator::construct): Do not call __use_alloc with
1999         rvalue arguments.
2001 2017-06-27  Tim Shen  <timshen@google.com>
2003         PR libstdc++/80187
2004         * include/std/variant (variant::variant, variant::~variant,
2005         variant::operator=): Implement triviality forwarding for four
2006         special member functions.
2007         * testsuite/20_util/variant/compile.cc: Tests.
2009 2017-06-27  Jonathan Wakely  <jwakely@redhat.com>
2011         PR libstdc++/81221
2012         * testsuite/25_algorithms/sample/81221.cc: Disable except for
2013         check-parallel.
2015         PR libstdc++/81221
2016         * include/bits/stl_algo.h (sample): Qualify with _GLIBCXX_STD_A not
2017         std.
2018         * testsuite/25_algorithms/sample/81221.cc: New.
2020 2017-06-22  Jonathan Wakely  <jwakely@redhat.com>
2022         PR libstdc++/81173
2023         * include/bits/stl_bvector.h (vector<bool>::_M_initialize_value):
2024         Do not pass null pointer to memset.
2026 2017-06-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
2028         PR libstdc++/80675
2029         PR libstdc++/80940
2030         * include/std/istream:
2031         (__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New.
2032         (__do_is_convertible_to_basic_istream_impl): Likewise.
2033         (__is_convertible_to_basic_istream_impl): Likewise.
2034         (__is_convertible_to_basic_istream): Use the new base.
2035         (__rvalue_istream_type): New.
2036         (operator>>(_Istream&&, _Tp&&)): Use the new helper alias
2037         for the SFINAE check, convert to the helper alias type before
2038         doing the actual extraction.
2039         * include/std/ostream:
2040         (__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New.
2041         (__do_is_convertible_to_basic_ostream_impl): Likewise.
2042         (__is_convertible_to_basic_ostream_impl): Likewise.
2043         (__is_convertible_to_basic_ostream): Use the new base.
2044         (__rvalue_ostream_type): New.
2045         (operator<<(_Ostream&&, const _Tp&)): Use the new helper alias
2046         for the SFINAE check, convert to the helper alias type before
2047         doing the actual insertion.
2048         * testsuite/27_io/rvalue_streams-2.cc: Add new tests.
2050 2017-06-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2052         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
2054 2017-06-21  Jonathan Wakely  <jwakely@redhat.com>
2056         PR libstdc++/81092
2057         * configure: Regenerate.
2059 2017-06-20  Uros Bizjak  <ubizjak@gmail.com>
2061         * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
2063 2017-06-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2065         * testsuite/20_util/variant/index_type.cc: Allow for all ilp32 and
2066         lp64 targets.
2068 2017-06-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2070         * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
2071         * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
2072         * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
2073         * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
2074         * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
2075         * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
2076         Likewise.
2077         * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
2078         * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
2079         Likewise.
2081 2017-06-18  H.J. Lu  <hongjiu.lu@intel.com>
2083         PR libstdc++/81092
2084         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
2086 2017-06-18  Andreas Schwab  <schwab@linux-m68k.org>
2088         PR libstdc++/81092
2089         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
2091 2017-06-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2093         * testsuite: Remove dg-skip-if, dg-xfail-if, dg-xfail-run-if
2094         default args.
2096 2017-06-17  Jonathan Wakely  <jwakely@redhat.com>
2098         PR libstdc++/80893
2099         * testsuite/23_containers/vector/bool/80893.cc: Add { target c++11 }.
2101 2017-06-16  Jonathan Wakely  <jwakely@redhat.com>
2103         * include/bits/shared_ptr.h (get_deleter): Add overload matching
2104         standard signature.
2105         * include/bits/shared_ptr_base.h (__shared_ptr): Declare new
2106         get_deleter overload as a friend.
2107         * testsuite/20_util/shared_ptr/misc/get_deleter.cc: New.
2109 2017-06-16  Jakub Jelinek  <jakub@redhat.com>
2111         PR libstdc++/81092
2112         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
2113         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
2114         * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
2116 2017-06-16  Jonathan Wakely  <jwakely@redhat.com>
2118         * include/bits/locale_conv.h (wbuffer_convert::sync): Fix condition.
2119         * testsuite/22_locale/conversions/buffer/2.cc: New.
2121         PR libstdc++/81092
2122         * acinclude.m4: Bump libtool_VERSION.
2123         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
2124         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
2125         * config/abi/pre/gnu.ver: Add wstring constructor symbols to
2126         GLIBCXX_3.4.24 version and move random_device::_M_get_entropy() symbol
2127         to new GLIBCXX_3.4.25 version.
2128         * doc/xml/manual/abi.xml: Document new versions.
2129         * doc/html/*: Regenerate.
2130         * testsuite/21_strings/basic_string/cons/char/8.cc: Use base object
2131         constructors to ensure required symbols are exported.
2132         * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
2133         * testsuite/util/testsuite_abi.cc: Add new version.
2135         * include/bits/locale_conv.h (wbuffer_convert::_M_put): Add missing
2136         return statement.
2137         * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
2138         Return void.
2139         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
2140         Likewise.
2141         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc: Add
2142         missing return statements.
2143         * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
2144         Likewise.
2145         * testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
2146         Return void.
2147         * testsuite/special_functions/14_expint/pr68397.cc: Likewise.
2149 2017-06-16  François Dumont  <fdumont@gcc.gnu.org>
2151         * include/bits/stl_bvector.h
2152         (__fill_bvector(_Bit_type*, unsigned int, unsigned int, bool)):
2153         Change signature.
2154         (std::fill(_Bit_iterator, _Bit_iterator, bool)): Adapt.
2155         (_Bvector_impl_data): New.
2156         (_Bvector_impl): Inherits from latter.
2157         (_Bvector_impl(_Bit_alloc_type&&)): Delete.
2158         (_Bvector_impl(_Bvector_impl&&)): New, default.
2159         (_Bvector_base()): Default.
2160         (_Bvector_base(_Bvector_base&&)): Default.
2161         (_Bvector_base::_M_move_data(_Bvector_base&&)): New.
2162         (vector(vector&&, const allocator_type&)): Use latter.
2163         (vector<bool>::operator=(vector&&)): Likewise.
2164         (vector<bool>::vector()): Default.
2165         (vector<bool>::vector(vector&&)): Default.
2166         (vector<bool>::assign(_InputIterator, _InputIterator)): Use
2167         _M_assign_aux.
2168         (vector<bool>::assign(initializer_list<bool>)): Likewise.
2169         (vector<bool>::_M_initialize_value(bool)): New.
2170         (vector<bool>(size_type, const bool&, const allocator_type&)): Use
2171         latter.
2172         (vector<bool>::_M_initialize_dispatch(_Integer, _Integer, __true_type)):
2173         Likewise.
2174         (vector<bool>::_M_fill_assign(size_t, bool)): Likewise.
2176 2017-06-15  François Dumont  <fdumont@gcc.gnu.org>
2178         * src/c++98/tree.cc  [!_GLIBCXX_INLINE_VERSION]
2179         (_Rb_tree_rotate_left, _Rb_tree_rotate_right): Delete.
2181 2017-06-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2183         * testsuite: Add dg-require-effective-target pthread to -pthread
2184         tests.
2185         Remove explicit target lists from dg-do and dg-options.
2187         * testsuite/30_threads/async/forced_unwind.cc: Remove explit
2188         target list from dg-options.
2189         * testsuite/30_threads/packaged_task/forced_unwind.cc: Likewise.
2191         * 30_threads/shared_mutex/cons/1.cc: Likewise.
2192         Pass -pthread for all targets.
2193         * 30_threads/shared_mutex/try_lock/1.cc: Likewise.
2194         * 30_threads/shared_mutex/try_lock/2.cc: Likewise.
2195         * 30_threads/shared_mutex/unlock/1.cc: Likewise.
2197         * testsuite/30_threads/this_thread/57060.cc: Require c++11 via
2198         dg-require-effective-target.
2200 2017-06-14  Jonathan Wakely  <jwakely@redhat.com>
2202         * doc/xml/manual/test.xml: Correct instructions on running tests.
2203         * testsuite/21_strings/basic_string/cons/char/deduction.cc: Adjust to
2204         pass when -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS.
2205         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2206         Likewise.
2207         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
2208         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
2209         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
2210         exceptions_failbit.cc: Likewise.
2211         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
2212         exceptions_failbit.cc: Likewise.
2213         * testsuite/27_io/basic_istream/extractors_other/char/
2214         exceptions_null.cc: Likewise.
2215         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
2216         exceptions_null.cc: Likewise.
2217         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
2218         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
2219         * testsuite/27_io/basic_ostream/inserters_other/char/
2220         exceptions_null.cc: Likewise.
2221         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
2222         exceptions_null.cc: Likewise.
2223         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
2225 2017-06-12  Pedro Alves  <palves@redhat.com>
2227         * doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr
2228         char_traits status.
2229         * doc/html/*: Regenerate.
2231         * include/bits/char_traits.h (_GLIBCXX_ALWAYS_INLINE): Define if
2232         not already defined.
2233         (__cpp_lib_constexpr_char_traits): Uncomment.
2234         (__constant_string_p, __constant_char_array_p): New.
2235         (std::char_traits<char>, std::char_traits<wchar_t>): Add
2236         _GLIBCXX17_CONSTEXPR on compare, length and find and use
2237         __constant_string_p, __constant_char_array_p and
2238         __builtin_constant_p to defer to __gnu_cxx::char_traits at compile
2239         time.
2241         * testsuite/21_strings/char_traits/requirements/
2242         constexpr_functions_c++17.cc: Uncomment
2243         __cpp_lib_constexpr_char_traits tests.  Uncomment
2244         test_compare<char>, test_length<char>, test_find<char>,
2245         test_compare<wchar_t>, test_length<wchar_t> and test_find<wchar_t>
2246         static_assert tests.
2248 2017-06-12  François Dumont  <fdumont@gcc.gnu.org>
2250         * include/bits/stl_tree.h (_Rb_tree_impl()): Restore _Node_allocator
2251         default init.
2252         * testsuite/util/testsuite_allocator.h
2253         (__gnu_test::default_init_allocator<>) New.
2254         * testsuite/23_containers/set/allocator/default_init.cc: New.
2255         * testsuite/23_containers/map/allocator/default_init.cc: New.
2257 2017-06-12  Jonathan Wakely  <jwakely@redhat.com>
2259         PR libstdc++/55917
2260         * src/c++11/thread.cc (execute_native_thread_routine): Remove
2261         try-block so that exceptions propagate out of the thread and terminate
2262         is called by the exception-handling runtime.
2263         (execute_native_thread_routine_compat): Likewise.
2264         * testsuite/30_threads/thread/cons/terminate.cc: New.
2266 2017-06-09  Jonathan Wakely  <jwakely@redhat.com>
2268         * doc/xml/manual/intro.xml: Document LWG 2802, 2873 and 2942 changes.
2269         * include/bits/shared_ptr.h (shared_ptr): Use rvalues for deleters
2270         (LWG 2802).
2271         * include/bits/shared_ptr_base.h (_Sp_ebo_helper, _Sp_counted_deleter
2272         (_Sp_counted_deleter::_Impl, __shared_count, __shared_ptr): Likewise.
2273         * testsuite/20_util/shared_ptr/cons/lwg2802.cc: New.
2275         * include/bits/forward_list.h (forward_list): Add deduction guide.
2276         * include/bits/stl_deque.h (deque): Likewise.
2277         * include/bits/stl_list.h (list): Likewise.
2278         * include/bits/stl_vector.h (vector): Likewise.
2279         * testsuite/23_containers/deque/cons/deduction.cc: New.
2280         * testsuite/23_containers/forward_list/cons/deduction.cc: New.
2281         * testsuite/23_containers/list/cons/deduction.cc: New.
2282         * testsuite/23_containers/vector/cons/deduction.cc: New.
2284 2017-06-08  Jonathan Wakely  <jwakely@redhat.com>
2286         PR libstdc++/81017
2287         * include/bits/std_function.h (function::function(function&&))
2288         (function::operator=(funtion&&)): Add noexcept.
2289         * testsuite/20_util/function/assign/move.cc: Check for noexcept.
2290         * testsuite/20_util/function/cons/move.cc: Likewise.
2292 2017-06-07  Jonathan Wakely  <jwakely@redhat.com>
2294         * include/bits/regex.h (basic_regex): Add deduction guide from P0433.
2295         * testsuite/28_regex/basic_regex/ctors/deduction.cc: New.
2297         PR libstdc++/81002
2298         * include/bits/regex.h (basic_regex): Adjust call to __compile_nfa
2299         so iterator type is deduced.
2300         * include/bits/regex_compiler.h (__compile_nfa): Reorder template
2301         parameters to allow iterator type to be deduced.
2302         * testsuite/28_regex/basic_regex/ctors/basic/iter.cc: New.
2304         * include/bits/alloc_traits.h (__is_allocator, _RequireAllocator):
2305         New trait and alias for detecting Allocator-like types.
2306         * include/bits/basic_string.h (basic_string): Add deduction guide
2307         from P0433.
2308         * include/ext/alloc_traits.h (__gnu_cxx::__alloc_traits): Add template
2309         parameter with default template argument that causes substitution
2310         failures for types that cannot be allocators.
2311         * testsuite/21_strings/basic_string/cons/char/deduction.cc: New.
2312         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: New.
2314 2017-06-02  Jonathan Wakely  <jwakely@redhat.com>
2316         PR libstdc++/80939
2317         * include/std/variant (__erased_ctor, __erased_assign, __erased_swap)
2318         (__erased_hash): Remove constexpr specifier and qualify calls to
2319         __ref_cast.
2320         (__erased_dtor): Remove constexpr specifier and use _Destroy.
2322 2017-06-05  Jonathan Wakely  <jwakely@redhat.com>
2324         * include/bits/stl_iterator_base_funcs.h
2325         (__advance<_RandomAccessIterator, _Distance>): Optimize for next/prev
2326         cases where incrementing or decrementing a single step.
2328         * include/bits/shared_ptr_base.h (__shared_ptr::owner_before)
2329         (__weak_ptr::owner_before, _Sp_owner_less::operator()): Add noexcept
2330         specifiers as per LWG 2873 and LWG 2942.
2331         * testsuite/20_util/owner_less/noexcept.cc: New.
2332         * testsuite/20_util/shared_ptr/observers/owner_before.cc: Test
2333         noexcept guarantees.
2334         * testsuite/20_util/weak_ptr/observers/owner_before.cc: Likewise.
2336 2017-06-03  Andreas Schwab  <schwab@linux-m68k.org>
2338         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
2340 2017-06-03  Eric Botcazou  <ebotcazou@adacore.com>
2342         * src/filesystem/dir.cc (fs::_Dir::advance): Use std::exchange.
2344 2017-06-02  Jonathan Wakely  <jwakely@redhat.com>
2346         PR libstdc++/80624
2347         * doc/xml/manual/status_cxx2011.xml: Document to_int_type behaviour.
2348         * include/bits/char_traits.h (char_traits<char16_t>::to_int_type):
2349         Transform eof value to U+FFFD.
2350         * testsuite/21_strings/char_traits/requirements/char16_t/eof.cc: New.
2351         * testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc: New.
2352         * testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc: New.
2354         * libsupc++/Makefile.am: Remove custom targets for files that need to
2355         be compiled as C++11 or C++14.
2356         * libsupc++/Makefile.in: Regenerate.
2357         * libsupc++/del_ops.cc: Use pragma to disable -Wsized-deallocation
2358         warnings.
2359         * libsupc++/del_opvs.cc: Likewise.
2361 2017-06-02  Richard Biener  <rguenther@suse.de>
2362         Markus Eisenmann  <meisenmann.lba@fh-salzburg.ac.at>
2364         PR libstdc++/80721
2365         * libsupc++/eh_alloc.cc (pool::free): Keep list properly
2366         sorted and add missing freelist item merging cases.
2368 2017-06-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2370         (GLIBCXX_CROSSCONFIG): Handle *-solaris* like *-linux* etc.
2371         Remove *-solaris* section.
2372         * configure: Regenerate.
2374 2017-05-31  Jonathan Wakely  <jwakely@redhat.com>
2376         PR libstdc++/80893
2377         * include/bits/stl_bvector.h (vector<bool>::_M_initialize): Avoid
2378         null pointer dereference when size is zero.
2379         * testsuite/23_containers/vector/bool/80893.cc: New.
2380         * testsuite/util/testsuite_allocator.h (PointerBase::PointerBase):
2381         Add non-explicit constructor from nullptr.
2382         (PointerBase::derived() const): Add const-qualified overload.
2384 2017-05-20  Tim Shen  <timshen@google.com>
2386         PR libstdc++/80737
2387         * include/std/variant(variant::variant): SFINAE on is_same first.
2388         * testsuite/20_util/variant/any.cc: test case.
2390 2017-05-24  Jonathan Wakely  <jwakely@redhat.com>
2392         * src/c++11/random.cc (random_device::_M_getentropy): Use __CHAR_BIT__
2393         instead of fixed number of bits.
2395 2017-05-24  Andreas Schwab  <schwab@suse.de>
2397         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
2398         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise.
2400 2017-05-23  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
2401             Jonathan Wakely  <jwakely@redhat.com>
2403         PR libstdc++/67578
2404         * acinclude.m4: Bump libtool_VERSION.
2405         * config/abi/pre/gnu.ver: Create GLIBCXX_3.4.24 with new symbol.
2406         * config.h.in: Regenerate.
2407         * configure: Regenerate.
2408         * configure.ac: Add test for <linux/random.h>.
2409         * doc/xml/manual/abi.xml: Document new library version.
2410         * include/bits/random.h (random_device::entropy)
2411         [_GLIBCXX_USE_RANDOM_TR1]: Add call to new _M_getentropy member.
2412         (random_device::_M_getentropy): Declare.
2413         * src/c++11/random.cc (random_device::_M_getentropy): Define.
2414         * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.24 to known
2415         versions, and make it the latest version.
2417 2017-05-23  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
2419         PR libstdc++/67214
2420         * include/bits/locale_facets.tcc (num_get::_M_extract_int): Add
2421         explicit conversion to avoid signed overflow.
2423 2017-05-19  Jonathan Wakely  <jwakely@redhat.com>
2425         PR libstdc++/80796
2426         * include/bits/stl_algo.h (search): Add new overload for C++17.
2427         * testsuite/25_algorithms/search/searcher.cc: New.
2429 2017-05-18  Jonathan Wakely  <jwakely@redhat.com>
2431         PR libstdc++/80478
2432         * include/std/functional (_Mem_fn_traits_base): Add specializations
2433         for noexcept member function types.
2434         * testsuite/20_util/function_objects/mem_fn/80478.cc: New test.
2436 2017-05-18  Jonathan Wakely  <jwakely@redhat.com>
2438         * doc/xml/manual/policy_data_structures.xml: Fix typo.
2439         * doc/xml/manual/test_policy_data_structures.xml: Likewise.
2440         * doc/html/*: Regenerate.
2442         * doc/xml/manual/abi.xml: Document latest library versions.
2443         * doc/xml/manual/build_hacking.xml: Document requirement to update
2444         abi.xml when bumping library versions.
2445         * doc/html/*: Regenerate.
2447 2017-05-17  Jonathan Wakely  <jwakely@redhat.com>
2449         * include/bits/refwrap.h: Fix Doxygen warning.
2450         * include/bits/specfun.h: Likewise.
2451         * include/bits/std_function.h: Likewise.
2452         * include/bits/stl_algo.h (set_union, set_intersection)
2453         (set_difference, set_symmetric_difference): Add Doxygen @param tags
2454         for output iterator parameters.
2455         * include/bits/stl_iterator.h (inserter): Add Doxygen @param tag for
2456         iterator parameter.
2457         * include/std/mutex (try_lock, lock): Change Mutex to Lockable in
2458         Doxygen comments.
2460 2017-05-17  Ville Voutilainen  <ville.voutilainen@gmail.com>
2462         Implement new C++ intrinsics __is_assignable and __is_constructible.
2463         * include/std/type_traits (__do_is_static_castable_impl): Remove.
2464         (__is_static_castable_impl, __is_static_castable_safe): Likewise.
2465         (__is_static_castable, __do_is_direct_constructible_impl): Likewise.
2466         (__is_direct_constructible_impl): Likewise.
2467         (__is_direct_constructible_new_safe): Likewise.
2468         (__is_base_to_derived_ref, __is_lvalue_to_rvalue_ref): Likewise.
2469         (__is_direct_constructible_ref_cast): Likewise.
2470         (__is_direct_constructible_new, __is_direct_constructible): Likewise.
2471         (__do_is_nary_constructible_impl): Likewise.
2472         (__is_nary_constructible_impl, __is_nary_constructible): Likewise.
2473         (__is_constructible_impl): Likewise.
2474         (is_constructible): Call the intrinsic.
2475         (__is_assignable_helper): Remove.
2476         (is_assignable): Call the intrinsic.
2477         (is_trivially_constructible): Likewise.
2478         (__is_trivially_copy_constructible_impl): New.
2479         (is_trivially_copy_constructible): Use it.
2480         (__is_trivially_move_constructible_impl): New.
2481         (is_trivially_move_constructible): Use it.
2482         (is_trivially_assignable): Call the intrinsic.
2483         (__is_trivially_copy_assignable_impl): New.
2484         (is_trivially_copy_assignable): Use it.
2485         (__is_trivially_move_assignable_impl): New.
2486         (is_trivially_move_assignable): Use it.
2487         (testsuite/20_util/declval/requirements/1_neg.cc): Adjust.
2488         (testsuite/20_util/is_trivially_copy_assignable/value.cc):
2489         Add test for void.
2490         (testsuite/20_util/is_trivially_copy_constructible/value.cc): Likewise.
2491         (testsuite/20_util/is_trivially_move_assignable/value.cc): Likewise.
2492         (testsuite/20_util/is_trivially_move_constructible/value.cc): Likewise.
2493         (testsuite/20_util/make_signed/requirements/typedefs_neg.cc): Adjust.
2494         (testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc):
2495         Likewise.
2497 2017-05-16  Jonathan Wakely  <jwakely@redhat.com>
2499         * testsuite/experimental/source_location/1.cc: Change expected result
2500         for source_location::current() used in default member initializer.
2502         * doc/xml/manual/status_cxx2017.xml: Update status table.
2503         * doc/html/*: Regenerate.
2504         * include/Makefile.am: Add new header.
2505         * include/Makefile.in: Regenerate.
2506         * include/experimental/source_location: New header implementing N4519.
2507         * testsuite/experimental/source_location/1.cc: New test.
2509         PR libstdc++/80285
2510         * include/bits/shared_ptr_base.h [!__cpp_rtti] (type_info): Declare
2511         outside versioned namespace.
2513         * configure: Regenerate.
2515 2017-05-16  Marc Glisse  <marc.glisse@inria.fr>
2517         * include/std/optional (_Optional_base::_M_get): Check precondition.
2518         * testsuite/20_util/optional/cons/value_neg.cc: Update line numbers.
2520 2017-05-16  Jonathan Wakely  <jwakely@redhat.com>
2522         * doc/xml/manual/appendix_contributing.xml: Link to test docs and
2523         note higher DejaGnu version requirement.
2524         * doc/html/*: Regenerate.
2526         * doc/xml/manual/appendix_contributing.xml: Link to the list of bad
2527         identifiers.
2528         * doc/html/*: Regenerate.
2530 2017-05-15  Jonathan Wakely  <jwakely@redhat.com>
2532         PR libstdc++/80761
2533         * include/bits/node_handle.h (_Node_insert_return): Reorder members.
2534         (tuple_size, tuple_element): Remove partial specializations.
2535         * include/bits/stl_tree.h (_Rb_tree::insert_return_type): Use
2536         const_iterator for std::set.
2537         * testsuite/23_containers/map/modifiers/extract.cc: New.
2538         * testsuite/23_containers/set/modifiers/extract.cc: New.
2539         * testsuite/23_containers/unordered_map/modifiers/extract.cc: New.
2540         * testsuite/23_containers/unordered_set/modifiers/extract.cc: New.
2542 2017-05-12  Jonathan Wakely  <jwakely@redhat.com>
2544         PR libstdc++/78939
2545         * include/std/utility (tuple_size<cv T>): Only define partial
2546         specializations when tuple_size<T>::value is valid.
2547         * testsuite/20_util/tuple/78939.cc: New.
2548         * testsuite/20_util/tuple/cv_tuple_size_neg.cc: New.
2550 2017-05-11  François Dumont  <fdumont@gcc.gnu.org>
2552         * include/bits/stl_tree.h [_GLIBCXX_INLINE_VERSION]
2553         (_Rb_tree_impl<>): Remove _Is_pod_comparator
2554         template parameter.
2556         * include/debug/formatter.h [_GLIBCXX_INLINE_VERSION]
2557         (__gnu_debug::_Error_formatter::_Parameter::_M_print_field): Remove.
2558         (__gnu_debug::_Error_formatter::_Parameter::_M_print_description):
2559         Remove.
2560         (__gnu_debug::_Error_formatter::_M_format_word): Remove.
2561         (__gnu_debug::_Error_formatter::_M_print_word): Remove.
2562         (__gnu_debug::_Error_formatter::_M_print_string): Remove.
2563         (__gnu_debug::_Error_formatter::_M_get_max_length): Remove.
2564         * src/c++11/debug.cc: Adapt.
2565         * config/abi/pre/gnu-versioned-namespace.ver: Adapt.
2567 2017-05-11  Jonathan Wakely  <jwakely@redhat.com>
2569         * doc/xml/manual/allocator.xml: Fix ViewCVS URLs.
2570         * doc/xml/manual/mt_allocator.xml: Likewise.
2571         * doc/html/*: Regenerate.
2573         PR libstdc++/80285
2574         * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Define
2575         function to get unique fake std::type_info reference.
2576         (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Compare to
2577         _S_ti() fake reference.
2578         (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Share
2579         single implementation with or without RTTI enable.
2580         [!__cpp_rtti]: Pass fake reference to _M_get_deleter.
2581         * testsuite/20_util/shared_ptr/creation/alloc.cc: Change expected
2582         allocation and deallocation counts.
2583         * testsuite/20_util/shared_ptr/creation/single_allocation.cc: New.
2584         * testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc:
2585         New.
2587 2017-05-10  François Dumont  <fdumont@gcc.gnu.org>
2589         Bump version namespace.
2590         * config/abi/pre/gnu-versioned-namespace.ver: Bump version namespace
2591         from __7 to __8. Bump GLIBCXX_7.0 to GLIBCXX_8.0.
2592         * acinclude.m4 (libtool_VERSION): Bump to 8:0:0.
2593         * include/bits/c++config: Adapt.
2594         * include/bits/regex.h: Adapt.
2595         * include/experimental/bits/fs_fwd.h: Adapt.
2596         * include/experimental/bits/lfts_config.h: Adapt.
2597         * include/std/variant: Adapt.
2598         * python/libstdcxx/v6/printers.py: Adapt.
2599         * testsuite/libstdc++-prettyprinters/48362.cc: Adapt.
2601         * include/bits/stl_algobase.h (std::__iter_swap<false>): Remove
2602         _GLIBCXX_MOVE usage.
2604 2017-05-09  Jason Merrill  <jason@redhat.com>
2606         * testsuite/24_iterators/container_access.cc (test03): Make il3 static.
2608 2017-05-08  Jonathan Wakely  <jwakely@redhat.com>
2610         * include/std/optional: Use a separate static_assert per condition.
2611         * testsuite/20_util/optional/cons/value_neg.cc: Update dg-error line
2612         numbers.
2614         * doc/xml/manual/mt_allocator.xml: Clarify deallocation behaviour.
2615         * doc/html/*: Regenerate.
2617 2017-05-02  Hugo Beauzée-Luyssen <hugo@beauzee.fr>
2619         PR libstdc++/69506
2620         * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_WEAK_REF): Define.
2622 2017-04-29  François Dumont  <fdumont@gcc.gnu.org>
2624         * testsuite/libstdc++-prettyprinters/48362.cc: Replace a regexp-test
2625         by a note-test.
2627 2017-04-28  Jonathan Wakely  <jwakely@redhat.com>
2629         PR libstdc++/80553
2630         * include/bits/stl_construct.h (_Destroy, _Destroy_n): Add static
2631         assertions to ensure type is destructible.
2632         (destroy_at, destroy, destroy_n): Move from stl_uninitialized.h.
2633         * include/bits/stl_uninitialized.h (destroy_at, destroy, destroy_n):
2634         Move to stl_construct.h.
2635         * testsuite/20_util/specialized_algorithms/memory_management_tools/
2636         destroy_neg.cc: New test.
2637         * testsuite/23_containers/vector/cons/destructible_neg.cc: New test.
2639         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Remove
2640         superfluous "" in dg-error.
2642 2017-04-28  Tom de Vries  <tom@codesourcery.com>
2644         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Remove
2645         superfluous '{ target *-*-* }' in dg-(error|warning|message|bogus).
2647 2017-04-27  Jonathan Wakely  <jwakely@redhat.com>
2649         * include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
2650         (PB_DS_CLASS_C_DEC::end()): Remove redundant const in cast type.
2651         * testsuite/util/testsuite_rng.h (twister_rand_gen::get_prob()):
2652         Likewise.
2654 2017-04-26  Jonathan Wakely  <jwakely@redhat.com>
2656         * testsuite/23_containers/deque/allocator/move_assign-2.cc: Improve
2657         comment. Ensure first test works because allocator type propagates and
2658         not because is_always_equal is true.
2659         * testsuite/23_containers/vector/52591.cc: Likewise. Restore original
2660         testcase that instantiates the move-assignment operator.
2662 2017-04-24  Jonathan Wakely  <jwakely@redhat.com>
2664         PR libstdc++/80506
2665         * include/bits/random.tcc (gamma_distribution::operator()): Fix magic
2666         number used in loop condition.
2668         PR libstdc++/80504
2669         * include/bits/refwrap.h (ref, cref): Qualify calls.
2670         * testsuite/20_util/reference_wrapper/80504.cc: New test.
2672         PR libstdc++/80493
2673         * include/experimental/optional (optional::swap): Fix exception
2674         specification.
2676 2017-04-21  Jonathan Wakely  <jwakely@redhat.com>
2678         PR libstdc++/80316
2679         * include/std/future (_State_baseV2::_Setter::operator()): Remove
2680         _S_check calls that are done after the pointer to the shared state is
2681         already dereferenced.
2682         (_State_baseV2::_Setter<_Res, void>): Define specialization for void
2683         as partial specialization so it can be defined within the definition
2684         of _State_baseV2.
2685         (_State_baseV2::__setter): Call _S_check.
2686         (_State_baseV2::__setter(promise<void>*)): Add overload for use by
2687         promise<void>::set_value and promise<void>::set_value_at_thread_exit.
2688         (promise<T>, promise<T&>, promise<void>): Make _State a friend.
2689         (_State_baseV2::_Setter<void, void>): Remove explicit specialization.
2690         (promise<void>::set_value, promise<void>::set_value_at_thread_exit):
2691         Use new __setter overload.
2692         * testsuite/30_threads/promise/members/at_thread_exit2.cc: New test.
2693         * testsuite/30_threads/promise/members/set_exception.cc: Test
2694         promise<T&> and promise<void> specializations.
2695         * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
2696         Test for no_state error condition.
2697         * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
2699         * include/backward/auto_ptr.h: Ignore deprecated warnings from use
2700         of auto_ptr.
2701         * include/bits/shared_ptr.h: Likewise.
2702         * include/bits/shared_ptr_base.h: Likewise.
2703         * include/bits/unique_ptr.h: Likewise.
2704         * libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc: Adjust
2705         dg-error lineno.
2706         * libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc: Likewise.
2707         * libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc:
2708         Likewise.
2709         * libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc:
2710         Likewise.
2712 2017-04-20  Edward Smith-Rowland  <3dw4rd@verizon.net>
2714         PR libstdc++/68397 std::tr1::expint fails ... long double arguments.
2715         * include/tr1/exp_integral.tcc: Increase iteration limits.
2716         * testsuite/tr1/5_numerical_facilities/special_functions/15_expint/
2717         pr68397.cc: New test.
2718         * testsuite/special_functions/14_expint/pr68397.cc: New test.
2720 2017-04-20  Jonathan Wakely  <jwakely@redhat.com>
2722         PR libstdc++/79862
2723         * include/std/atomic [!_GLIBCXX_USE_C99_STDINT_TR1] (atomic_int8_t)
2724         (atomic_uint8_t, atomic_int16_t, atomic_uint16_t, atomic_int32_t,
2725         (atomic_uint32_t, atomic_int64_t, atomic_uint64_t)
2726         (atomic_int_least8_t, atomic_uint_least8_t, atomic_int_least16_t)
2727         (atomic_uint_least16_t, atomic_int_least32_t, atomic_uint_least32_t)
2728         (atomic_int_least64_t, atomic_uint_least64_t, atomic_int_fast8_t)
2729         (atomic_uint_fast8_t, atomic_int_fast16_t, atomic_uint_fast16_t)
2730         (atomic_int_fast32_t, atomic_uint_fast32_t, atomic_int_fast64_t)
2731         (atomic_uint_fast64_t, atomic_intmax_t, atomic_uintmax_t): Don't
2732         define.
2734 2017-04-19  Jonathan Wakely  <jwakely@redhat.com>
2736         * doc/xml/manual/abi.xml: Rephrase one of the references to the
2737         Itanium C++ ABI.
2738         * doc/xml/manual/test.xml: Document DejaGnu 1.5.3 requirement.
2739         * doc/html/*: Regenerate.
2741         * libsupc++/new: Update comment on #endif directive.
2743         PR libstdc++/80448
2744         * include/experimental/bits/fs_dir.h (directory_iterator)
2745         (recursive_directory_iterator): Remove noexcept from defaulted
2746         constructors.
2748         PR libstdc++/80446
2749         * include/std/type_traits (is_aggregate): Change __has_builtin checks.
2750         * libsupc++/new (launder): Likewise.
2752 2017-04-18  Jonathan Wakely  <jwakely@redhat.com>
2754         * include/std/functional (default_searcher, __boyer_moore_array_base)
2755         (__is_std_equal_to, __boyer_moore_base_t, boyer_moore_searcher)
2756         (boyer_moore_horspool_searcher): Remove redundant namespace
2757         qualification.
2758         (default_searcher::operator()): Construct return value early and
2759         advance second member in-place.
2760         (boyer_moore_horspool_searcher::operator()): Increment random access
2761         iterator directly instead of using std::next.
2762         (boyer_moore_searcher::operator()): Fix return value.
2763         * testsuite/20_util/function_objects/searchers.cc: Check both parts
2764         of return values.
2766 2017-04-12  Gerald Pfeifer  <gerald@pfeifer.com>
2768         * doc/xml/faq.xml: Update reference link to C++ ABI for Itanium.
2769         * doc/xml/manual/abi.xml. Ditto (thrice).
2771 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
2773         * doc/xml/manual/status_cxx2017.xml: Remove duplicate table entry.
2774         * doc/html/*: Regenerate.
2776         * testsuite/20_util/reference_wrapper/invoke.cc: Uncomment tests
2777         that no longer fail.
2779         * include/bits/ios_base.h: Correct comment.
2780         * testsuite/util/testsuite_hooks.h: Likewise.
2782         * doc/xml/manual/status_cxx2017.xml: Update C++17 status table.
2783         * doc/xml/manual/appendix_contributing.xml (contrib.organization): Add
2784         directories for debug, parallel and profile headers.
2785         * doc/html/*: Regenerate.
2787         * include/bits/char_traits.h (__gnu_cxx::char_traits): Add
2788         _GLIBCXX14_CONSTEXPR on assign, compare, find, and length.
2789         (std::char_traits<char>, std::char_traits<wchar_t>): Add
2790         _GLIBCXX17_CONSTEXPR on assign.
2791         (std::char_traits<char16_t>, std::char_traits<char32_t>): Add
2792         _GLIBCXX17_CONSTEXPR on assign, compare, find, and length.
2793         * testsuite/21_strings/char_traits/requirements/
2794         constexpr_functions_c++17.cc: New test.
2796 2017-04-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
2798         PR libstdc++/79141
2799         * include/bits/stl_pair.h (__nonesuch_no_braces): New.
2800         (operator=(typename conditional<
2801         __and_<is_copy_assignable<_T1>,
2802         is_copy_assignable<_T2>>::value,
2803         const pair&, const __nonesuch&>::type)): Change __nonesuch
2804         to __nonesuch_no_braces.
2805         (operator=(typename conditional<
2806         __not_<__and_<is_copy_assignable<_T1>,
2807         is_copy_assignable<_T2>>>::value,
2808         const pair&, const __nonesuch&>::type)): Likewise.
2809         (operator=(typename conditional<
2810         __and_<is_move_assignable<_T1>,
2811         is_move_assignable<_T2>>::value,
2812         pair&&, __nonesuch&&>::type)): Likewise.
2813         * testsuite/20_util/pair/79141.cc: New.
2815 2017-04-03  Ville Voutilainen  <ville.voutilainen@gmail.com>
2817         Implement std::is_aggregate.
2818         * include/std/type_traits (is_aggregate, is_aggregate_v): New.
2819         * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
2820         New.
2821         * testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
2822         * testsuite/20_util/is_aggregate/value.cc: Likewise.
2824 2017-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
2826         Adjust optional's pretty printer for LWG 2900.
2827         * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter.__init__):
2828         Look at the nested payload in case of non-experimental optional.
2830 2017-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
2832         Implement LWG 2900, The copy and move constructors
2833         of optional are not constexpr.
2834         * include/std/optional (_Optional_payload): New.
2835         (_Optional_base): Remove the bool parameter.
2836         (_Optional_base<_Tp, false>): Remove.
2837         (_Optional_base()): Adjust.
2838         (_Optional_base(nullopt_t)): Likewise.
2839         (_Optional_base(in_place_t, _Args&&...)): Likewise.
2840         (_Optional_base(in_place_t, initializer_list<_Up>, _Args&&...)):
2841         Likewise.
2842         (_Optional_base(const _Optional_base&)): Likewise.
2843         (_Optional_base(_Optional_base&&)): Likewise.
2844         (operator=(const _Optional_base&)): Likewise.
2845         (operator=(_Optional_base&&)): Likewise.
2846         (~_Optional_base()): Remove.
2847         (_M_is_engaged()): Adjust.
2848         (_M_get()): Likewise.
2849         (_M_construct(_Args&&...)): Likewise.
2850         (_M_destruct()): Likewise.
2851         (_M_reset()): Likewise.
2852         (_Optional_base::_Empty_byte): Remove.
2853         (_Optional_base::_M_empty): Remove.
2854         (_Optional_base::_M_payload): Adjust.
2855         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
2856         * testsuite/20_util/optional/constexpr/cons/value.cc: Add tests.
2858 2017-03-28  Jonathan Wakely  <jwakely@redhat.com>
2860         PR libstdc++/80137
2861         * include/bits/random.tcc (generate_canonical): Use std::nextafter
2862         or numeric_limits::epsilon() to reduce out-of-range values.
2863         * testsuite/26_numerics/random/uniform_real_distribution/operators/
2864         64351.cc: Verify complexity requirement is met.
2866         * doc/xml/manual/abi.xml: Add xml:id anchor.
2867         * doc/xml/manual/using.xml (manual.intro.using.macros): Document
2868         _GLIBCXX_RELEASE. Link to new anchor for __GLIBCXX__ notes.
2869         (concurrency.io.structure): Add markup.
2870         * doc/html/*: Regenerate.
2872         PR libstdc++/80229
2873         * include/bits/shared_ptr_base.h
2874         (__shared_ptr::_M_enable_shared_from_this_with): Change parameters to
2875         non-const and then use remove_cv to get unqualified type.
2876         * testsuite/20_util/enable_shared_from_this/members/const.cc: Don't
2877         cast away constness on object created const.
2878         * testsuite/20_util/shared_ptr/cons/80229.cc: New test.
2880 2017-03-26  Markus Trippelsdorf  <markus@trippelsdorf.de>
2882         PR libstdc++/80183
2883         * include/bits/stl_tree.h:
2884         (_Rb_tree_header::_M_move_data(_Rb_tree_header&)): Also save _M_color.
2886 2017-03-23  Jonathan Wakely  <jwakely@redhat.com>
2888         * testsuite/23_containers/array/tuple_interface/
2889         tuple_element_debug_neg.cc: Adjust dg-error.
2890         * testsuite/23_containers/list/operations/78389.cc: Fix less-than to
2891         define a valid strict weak ordering.
2892         * testsuite/23_containers/priority_queue/67085.cc: Disable test for
2893         Debug Mode, due to debug checks making extra copies of predicate.
2894         * testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
2895         Likewise.
2897         * doc/xml/faq.xml: Add link.
2898         * doc/xml/manual/backwards_compatibility.xml: Remove outdated
2899         information on pre-ISO headers. Replace broken link to C++ FAQ Lite.
2900         * doc/xml/manual/io.xml: Update broken link.
2901         * doc/html/*: Regenerate.
2903 2017-03-23  Daniel Kruegler  <daniel.kruegler@gmail.com>
2905         Implement LWG 2686, Why is std::hash specialized for error_code,
2906         but not error_condition?
2907         * include/std/system_error (hash<error_condition>): Define for C++17.
2908         * testsuite/20_util/hash/operators/size_t.cc (hash<error_condition>):
2909         Instantiate test for error_condition.
2910         * testsuite/20_util/hash/requirements/explicit_instantiation.cc
2911         (hash<error_condition>): Instantiate hash<error_condition>.
2913         * include/bits/c++config (_GLIBCXX17_INLINE): Define.
2914         * include/bits/regex_constants.h (All std::regex_constants constants):
2915         Add _GLIBCXX17_INLINE as per P0607R0.
2916         * include/bits/std_mutex.h (defer_lock, try_to_lock, adopt_lock):
2917         Likewise.
2918         * include/bits/stl_pair.h (piecewise_construct): Likewise.
2919         * include/bits/uses_allocator.h (allocator_arg, uses_allocator_v)
2920         (__is_uses_allocator_constructible_v)
2921         (__is_nothrow_uses_allocator_constructible_v): Likewise.
2922         * include/std/chrono (treat_as_floating_point_v): Likewise.
2923         * include/std/functional (is_bind_expression_v, is_placeholder_v):
2924         Likewise.
2925         * include/std/optional (nullopt): Likewise.
2926         * include/std/ratio (ratio_equal_v, ratio_not_equal_v, ratio_less_v)
2927         ratio_less_equal_v, ratio_greater_v, ratio_greater_equal_v): Likewise.
2928         * include/std/system_error (is_error_code_enum_v)
2929         (is_error_condition_enum_v): Likewise.
2930         * include/std/tuple (tuple_size_v, ignore): Likewise.
2931         (ignore): Declare ignore constexpr as per LWG 2773, declare assignment
2932         constexpr as per LWG 2933.
2933         * include/std/type_traits (All variable templates): Add
2934         _GLIBCXX17_INLINE as per P0607R0.
2935         * include/std/variant (variant_size_v, variant_npos, __index_of_v)
2936         (__tuple_count_v, __exactly_once): Likewise.
2937         * testsuite/18_support/headers/new/synopsis.cc
2938         (hardware_destructive_interference_size)
2939         (hardware_constructive_interference_size): Likewise for commented-out
2940         variables.
2941         * testsuite/20_util/tuple/creation_functions/constexpr.cc: Add new
2942         test function for constexpr std::ignore (LWG 2773).
2943         * testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc: New
2944         test for LWG 2933.
2946 2017-03-22  Jonathan Wakely  <jwakely@redhat.com>
2948         * include/bits/shared_ptr.h (shared_ptr, weak_ptr): Add deduction
2949         guides for C++17.
2950         * include/bits/std_function.h (function): Likewise.
2951         * include/bits/stl_pair.h (pair): Likewise.
2952         * include/debug/array (__gnu_debug::array): Likewise.
2953         * include/std/array (array): Likewise.
2954         * include/std/functional (make_default_searcher)
2955         (make_boyer_moore_searcher, make_boyer_moore_horspool_searcher):
2956         Remove generator functions.
2957         * include/std/tuple (tuple): Add deduction guides.
2958         * include/std/valarray (valarray): Likewise.
2959         * testsuite/20_util/function_objects/searchers.cc: Adjust to use
2960         class template argument deduction instead of generator functions.
2961         * testsuite/20_util/function/cons/deduction.cc: New test.
2962         * testsuite/20_util/optional/cons/deduction_guide.cc: Rename to ...
2963         * testsuite/20_util/optional/cons/deduction.cc: ... here.
2964         * testsuite/20_util/pair/cons/deduction.cc: New test.
2965         * testsuite/20_util/shared_ptr/cons/deduction.cc: New test.
2966         * testsuite/20_util/tuple/cons/deduction.cc: New test.
2967         * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust dg-error.
2968         * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: New test.
2969         * testsuite/20_util/weak_ptr/cons/deduction.cc: New test.
2970         * testsuite/23_containers/array/cons/deduction.cc: New test.
2971         * testsuite/23_containers/array/cons/deduction_neg.cc: New test.
2972         * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
2973         Adjust dg-error.
2974         * testsuite/23_containers/array/tuple_interface/get_neg.cc: Likewise.
2975         * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
2976         Likewise.
2977         * testsuite/26_numerics/valarray/deduction.cc: New test.
2978         * testsuite/30_threads/lock_guard/cons/deduction.cc: New test.
2979         * testsuite/30_threads/scoped_lock/cons/deduction.cc: New test.
2980         * testsuite/30_threads/unique_lock/cons/deduction.cc: New test.
2982 2017-03-20  François Dumont  <fdumont@gcc.gnu.org>
2984         * include/bits/stl_deque.h (deque): Access allocator value_type only if
2985         concept checks are enabled.
2986         * include/bits/stl_stack.h (stack): Likewise.
2987         * include/bits/stl_vector.h (vector): Likewise.
2988         * include/bits/stl_list.h (list): Likewise and check
2989         _SGIAssignableConcept only in C++03.
2990         * include/bits/stl_map.h (map): Likewise.
2991         * include/bits/stl_set.h (set): Likewise.
2992         * include/bits/stl_multimap.h (multimap): Likewise.
2993         * include/bits/stl_multiset.h (multiset): Likewise.
2994         * include/bits/stl_queue.h (queue, priority_queue): Likewise.
2996 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
2998         * doc/xml/manual/appendix_contributing.xml: Convert link to
2999         ansi.org to https.
3000         Update link to the C++ standard at ansi.org.
3002         * doc/xml/faq.xml: Remove information redundant with the above;
3003         instead add a reference.
3005 2017-03-17  Jonathan Wakely  <jwakely@redhat.com>
3007         * src/c++11/codecvt.cc (range): Add non-type template parameter and
3008         define oerloaded operators for reading and writing code units.
3009         (range<Elem, false>): Define partial specialization for accessing
3010         wide characters in potentially unaligned byte ranges.
3011         (ucs2_span(const char16_t*, const char16_t*, ...))
3012         (ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
3013         to range<const char16_t, false> in order to avoid unaligned reads.
3014         (__codecvt_utf16_base<char16_t>::do_out)
3015         (__codecvt_utf16_base<char32_t>::do_out)
3016         (__codecvt_utf16_base<wchar_t>::do_out): Use range specialization for
3017         unaligned data to avoid unaligned writes.
3018         (__codecvt_utf16_base<char16_t>::do_in)
3019         (__codecvt_utf16_base<char32_t>::do_in)
3020         (__codecvt_utf16_base<wchar_t>::do_in): Likewise for writes. Return
3021         error if there are unprocessable trailing bytes.
3022         (__codecvt_utf16_base<char16_t>::do_length)
3023         (__codecvt_utf16_base<char32_t>::do_length)
3024         (__codecvt_utf16_base<wchar_t>::do_length): Pass arguments of type
3025         range<const char16_t, false> to span functions.
3026         * testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.
3028 2017-03-16  Jonathan Wakely  <jwakely@redhat.com>
3030         PR libstdc++/79980
3031         * src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.
3033         PR libstdc++/80041
3034         * src/c++11/codecvt.cc (__codecvt_utf16_base<wchar_t>::do_out)
3035         (__codecvt_utf16_base<wchar_t>::do_in): Convert char arguments to
3036         char16_t to work with UTF-16 instead of UTF-8.
3037         * testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.
3039         * src/c++11/codecvt.cc (codecvt<char16_t, char, mbstate_t>)
3040         (codecvt<char32_t, char, mbstate_t>, __codecvt_utf8_base<char16_t>)
3041         (__codecvt_utf8_base<char32_t>, __codecvt_utf8_base<wchar_t>)
3042         (__codecvt_utf16_base<char16_t>, __codecvt_utf16_base<char32_t>)
3043         (__codecvt_utf16_base<wchar_t>, __codecvt_utf8_utf16_base<char16_t>)
3044         (__codecvt_utf8_utf16_base<char32_t>)
3045         (__codecvt_utf8_utf16_base<wchar_t>): Fix do_encoding() and
3046         do_max_length() return values.
3047         * testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
3048         * testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
3049         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.
3051         PR libstdc++/79980
3052         * include/bits/locale_conv.h (__do_str_codecvt): Set __count on
3053         error path.
3054         * src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
3055         for manipulating codecvt_mode values.
3056         (read_utf16_bom): Compare input to BOM constants instead of integral
3057         constants that depend on endianness.  Take mode parameter by
3058         reference and adjust it, to distinguish between no BOM present and
3059         UTF-16BE BOM present.
3060         (ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
3061         (surrogates): New enumeration type.
3062         (utf16_in, utf16_out): Add surrogates parameter to choose between
3063         UTF-16 and UCS2 behaviour.
3064         (utf16_span, ucs2_span): Use std::min not std::max.
3065         (ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
3066         (ucs2_in): Likewise. Adjust calls to read_utf16_bom.
3067         * testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
3068         * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.
3070         PR libstdc++/79511
3071         * src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0xffff
3072         as a surrogate pair.
3073         (__codecvt_utf8_utf16_base<char32_t>::do_in): Use native endianness
3074         for internal representation.
3075         (__codecvt_utf8_utf16_base<wchar_t>::do_in): Likewise.
3076         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.
3078         PR libstdc++/80064
3079         * include/bits/stl_heap.h (__is_heap, push_heap, __adjust_heap)
3080         (pop_heap, make_heap, sort_heap, is_heap_until, is_heap): Cope with
3081         invalid instantiations using function types for _Compare argument.
3082         * testsuite/25_algorithms/make_heap/80064.cc: New test.
3084         PR libstdc++/67440
3085         * python/libstdcxx/v6/printers.py (find_type): Avoid gdb.Type.name
3086         for GDB 7.6 compatibility, use gdb.Type.unqualified instead.
3088 2017-03-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
3090         Implement LWG 2857, {variant,optional,any}::emplace should
3091         return the constructed value.
3092         * include/std/any (emplace(_Args&&...)): Change the return type and
3093         return a reference to the constructed value.
3094         (emplace(initializer_list<_Up>, _Args&&...)): Likewise.
3095         * include/std/optional (emplace(_Args&&...)): Likewise.
3096         (emplace(initializer_list<_Up>, _Args&&...)): Likewise.
3097         * include/std/variant (emplace<_Tp>(_Args&&...)): Likewise.
3098         (emplace<_Tp>(initializer_list<_Up>, _Args&&...)): Likewise.
3099         (emplace<_Np>(_Args&&...)): Likewise.
3100         (emplace<_Np>(initializer_list<_Up>, _Args&&...)): Likewise.
3101         * testsuite/20_util/any/assign/emplace.cc: Add tests for
3102         checking the return value of emplace.
3103         * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.
3104         * testsuite/20_util/optional/assignment/6.cc: Add tests for
3105         checking the return value of emplace.
3106         * testsuite/20_util/variant/run.cc: Likewise.
3108 2017-03-15  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
3110         PR libstdc++/62045
3111         * include/ext/pb_ds/qdetail/binary_heap_/binary_heap_.hpp
3112         (is_heap): Remove.
3113         (push_heap): Remove the wrong checking using is_heap.
3114         (make_heap): Remove the assertion using is_heap.
3115         * include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
3116         (modify): Ditto.
3117         (resize_for_insert_if_needed): Add PB_DS_ASSERT_VALID after
3118         calling make_heap.
3120 2017-03-15  Jonathan Wakely  <jwakely@redhat.com>
3122         PR libstdc++/62045
3123         * testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
3124         New test.
3125         * testsuite/ext/pb_ds/regression/priority_queues.cc: Fix copy&paste
3126         error in comment.
3128 2017-03-15  Jonathan Wakely  <jwakely@redhat.com>
3130         * acinclude.m4 (GLIBCXX_CHECK_S_ISREG_OR_S_IFREG): Fix typo in
3131         comment.
3132         * config.h.in: Regenerate.
3133         * configure: Regenerate.
3134         * doc/Makefile.in: Regenerate.
3136 2017-03-14  Jonathan Wakely  <jwakely@redhat.com>
3138         PR libstdc++/79162
3139         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
3140         (basic_string<C,T,A>::operator=(basic_string_view<C,T>)): Replace
3141         with a constrained template.
3142         [!_GLIBCXX_USE_CXX11_ABI]
3143         (basic_string<C,T,A>::operator=(basic_string_view<C,T>)): Likewise.
3144         * testsuite/21_strings/basic_string/cons/char/79162.cc: New test.
3145         * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: New test.
3147 2017-03-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
3149         PR libstdc++/80034
3150         * include/bits/list.tcc (merge(list&&)): Use const for the size_t
3151         in the catch-block.
3152         (merge(list&&, _StrictWeakOrdering)): Likewise.
3153         * testsuite/23_containers/list/operations/80034.cc: New.
3155 2017-03-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
3157         Implement LWG 2806, Base class of bad_optional_access.
3158         * include/std/optional (bad_optional_access):
3159         Derive from std::exception.
3160         (bad_optional_access::bad_optional_access): Adjust.
3161         (bad_optional_access::what): New.
3162         (__throw_bad_optional_access(const char*)):
3163         Remove the parameter and adjust calls.
3164         * testsuite/20_util/optional/cons/value_neg.cc: Adjust.
3165         * testsuite/20_util/optional/typedefs.cc: Likewise.
3167 2017-03-12  Ville Voutilainen  <ville.voutilainen@gmail.com>
3169         Implement LWG 2934, optional<const T> doesn't compare with T.
3170         * include/std/optional
3171         (operator==(const optional<_Tp>&, const optional<_Tp>&)):
3172         Turn into operator==(const optional<_Tp>&, const optional<_Up>&).
3173         (operator!=(const optional<_Tp>&, const optional<_Tp>&)):
3174         Turn into operator!=(const optional<_Tp>&, const optional<_Up>&).
3175         (operator<(const optional<_Tp>&, const optional<_Tp>&)):
3176         Turn into operator<(const optional<_Tp>&, const optional<_Up>&.
3177         (operator>(const optional<_Tp>&, const optional<_Tp>&)):
3178         Turn into operator>(const optional<_Tp>&, const optional<_Up>&.
3179         (operator<=(const optional<_Tp>&, const optional<_Tp>&)):
3180         Turn into operator<=(const optional<_Tp>&, const optional<_Up>&).
3181         (operator>=(const optional<_Tp>&, const optional<_Tp>&)):
3182         Turn into operator>=(const optional<_Tp>&, const optional<_Up>&).
3183         (operator==(const optional<_Tp>&, const _Tp&)):
3184         Turn into operator==(const optional<_Tp>&, const _Up&).
3185         (operator==(const _Tp&, const optional<_Tp>&)):
3186         Turn into operator==(const _Up&, const optional<_Tp>&).
3187         (operator!=(const optional<_Tp>&, const _Tp&)):
3188         Turn into operator!=(const optional<_Tp>&, const _Up&).
3189         (operator!=(const _Tp&, const optional<_Tp>&)):
3190         Turn into operator!=(const _Up&, const optional<_Tp>&).
3191         (operator<(const optional<_Tp>&, const _Tp&)):
3192         Turn into operator<(const optional<_Tp>&, const _Up&).
3193         (operator<(const _Tp&, const optional<_Tp>&)):
3194         Turn into operator<(const _Up&, const optional<_Tp>&).
3195         (operator>(const optional<_Tp>&, const _Tp&)):
3196         Turn into operator>(const optional<_Tp>&, const _Up&).
3197         (operator>(const _Tp&, const optional<_Tp>&)):
3198         Turn into operator>(const _Up&, const optional<_Tp>&).
3199         (operator<=(const optional<_Tp>&, const _Tp&)):
3200         Turn into operator<=(const optional<_Tp>&, const _Up&).
3201         (operator<=(const _Tp&, const optional<_Tp>&)):
3202         Turn into operator<=(const _Up&, const optional<_Tp>&).
3203         (operator>=(const optional<_Tp>&, const _Tp&)):
3204         Turn into operator>=(const optional<_Tp>&, const _Up&).
3205         (operator>=(const _Tp&, const optional<_Tp>&)):
3206         Turn into operator>=(const _Up&, const optional<_Tp>&).
3207         * testsuite/20_util/optional/relops/7.cc: New.
3209 2017-03-10  Jonathan Wakely  <jwakely@redhat.com>
3211         * testsuite/17_intro/names.cc: Undefine macros that clash with
3212         identifiers in AIX system headers.
3214         * include/bits/invoke.h (__invoke): Use __invoke_result instead of
3215         result_of, and __is_nothrow_invocable instead of
3216         __is_nothrow_callable.
3217         * include/bits/shared_ptr_base.h (__shared_ptr): Use __is_invocable
3218         instead of __is_callable.
3219         * include/std/functional (invoke): use invoke_result_t instead of
3220         result_of_t and is_nothrow_invocable instead of is_nothrow_callable.
3221         (_Not_fn): Use __invoke_result instead of result_of.
3222         * include/std/type_traits (__result_of_memobj, __result_of_memfun):
3223         Remove partial specializations for reference_wrapper types.
3224         (__result_of_impl): Use __inv_unwrap to strip reference_wrapper.
3225         (__invoke_result): Define replacement for result_of and then use it to
3226         define result_of.
3227         (__is_callable_impl, __is_callable, __is_nothrow_callable): Replace
3228         with __is_invocable_impl, __is_invocable, and __is_nothrow_invocable
3229         respectively.
3230         (invoke_result, invoke_result_t): Define for C++17.
3231         (is_callable, is_nothrow_callable): Replace with is_invocable,
3232         is_invocable_r, is_nothrow_invocable, and is_nothrow_invocable_r.
3233         (is_callable_v, is_nothrow_callable_v): Replace with is_invocable_v,
3234         is_invocable_r_v, is_nothrow_invocable_v, and is_nothrow_invocable_r_v.
3235         * include/std/variant (hash<variant<T...>>): Use is_nothrow_invocable_v
3236         instead of is_nothrow_callable_v.
3237         * testsuite/20_util/function_objects/invoke/59768.cc: Remove unused
3238         main function.
3239         * testsuite/20_util/function_objects/not_fn/1.cc: Use is_invocable
3240         instead of is_callable.
3241         * testsuite/20_util/is_callable/*: Rename directory and adjust tests
3242         to use new traits.
3243         * testsuite/20_util/is_nothrow_callable/*: Likewise.
3244         * testsuite/20_util/optional/hash.cc: Use is_invocable_v instead of
3245         is_callable.
3246         * testsuite/20_util/variant/hash.cc: Likewise.
3248 2017-03-10  George Lander  <george.lander@arm.com>
3250         * acinclude.m4 (glibcxx_cv_obsolete_isnan): Define
3251         _GLIBCXX_INCLUDE_NEXT_C_HEADERS before including math.h.
3252         * configure: Regenerate.
3254 2017-03-09  Jonathan Wakely  <jwakely@redhat.com>
3256         * include/std/functional (_Not_fn): Define macro to simplify
3257         repetitive function definitions.
3259         * doc/xml/manual/status_cxx2017.xml: Document std::byte support.
3260         * include/c_global/cstddef (std::byte): Define for C++17.
3261         * testsuite/18_support/byte/global_neg.cc: New test.
3262         * testsuite/18_support/byte/ops.cc: New test.
3263         * testsuite/18_support/byte/requirements.cc: New test.
3265 2017-03-05  Jonathan Wakely  <jwakely@redhat.com>
3267         * doc/xml/manual/status_cxx2017.xml: Document P0156R2 status.
3268         * doc/html/*: Regenerate.
3269         * include/std/mutex (scoped_lock): Implement new C++17 template.
3270         * testsuite/30_threads/scoped_lock/cons/1.cc: New test.
3271         * testsuite/30_threads/scoped_lock/requirements/
3272         explicit_instantiation.cc: New test.
3273         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: New test.
3275 2017-03-02  Gerald Pfeifer  <gerald@pfeifer.com>
3276             François Dumont  <frs.dumont@gmail.com>
3277             Jonathan Wakely  <jwakely@redhat.com>
3279         * doc/xml/manual/debug_mode.xml: Update and simplify note
3280         on link- and run-time coexistence.
3282 2017-03-02  Jonathan Wakely  <jwakely@redhat.com>
3284         * testsuite/17_intro/headers/names.cc: Rename to ...
3285         * testsuite/17_intro/names.cc: ... here.
3287         PR libstdc++/79789
3288         * include/bits/hashtable_policy.h (__clp2): Use reserved names for
3289         parameters and local variables.
3290         * include/bits/ios_base.h (make_error_code, make_error_condition):
3291         Likewise.
3292         * include/bits/list.tcc (list::sort): Likewise.
3293         * include/bits/mask_array.h (mask_array): Likewise.
3294         * include/bits/regex.h (regex_token_iterator): Likewise.
3295         * include/bits/slice_array.h (slice_array): Likewise.
3296         * include/bits/stl_algo.h (__sample): Likewise.
3297         * include/std/memory (undeclare_no_pointers): Likewise.
3298         * include/std/type_traits (is_callable_v, is_nothrow_callable_v):
3299         Likewise.
3300         * libsupc++/exception_ptr.h (__dest_thunk): Likewise.
3301         * testsuite/17_intro/headers/names.cc: New test.
3303         PR libstdc++/79798
3304         * include/std/functional (bind::_Res_type_impl): Fix incorrect use of
3305         result_of that loses top-level cv-qualifiers.
3306         * testsuite/20_util/bind/79798.cc: New test.
3308 2017-03-01  Gerald Pfeifer  <gerald@pfeifer.com>
3310         * doc/xml/manual/documentation_hacking.xml: Tweak link to
3311         doxygen.org.
3313 2017-02-23  Jonathan Wakely  <jwakely@redhat.com>
3315         * include/experimental/iterator: Include <iterator>.
3316         * testsuite/experimental/iterator/requirements.cc: Check for contents
3317         of <iterator>.
3319 2017-02-19  Dinka Ranns  <dinka.ranns@googlemail.com>
3321         C++17 GB50 resolution
3322         * include/std/chrono (duration::operator++()): Add
3323         _GLIBCXX17_CONSTEXPR.
3324         (duration::operator++(int)): Likewise.
3325         (duration::operator--()): Likewise.
3326         (duration::operator--(int)): Likewise.
3327         (duration::operator+=(const duration&)): Likewise.
3328         (duration::operator-=(const duration&)): Likewise.
3329         (duration::operator*=(const rep&)): Likewise.
3330         (duration::operator/=(const rep&)): Likewise.
3331         (duration::operator%=(const rep&)): Likewise.
3332         (duration::operator%=(const duration&)): Likewise.
3333         (time_point::operator+=(const duration&)): Likewise.
3334         (time_point::operator-=(const duration&)): Likewise.
3335         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: New test.
3336         * testsuite/20_util/duration/literals/range.cc: Adjust dg-error.
3337         * testsuite/20_util/time_point/arithmetic/constexpr.cc: New test.
3339 2017-02-19  Gerald Pfeifer  <gerald@pfeifer.com>
3341         * doc/xml/manual/debug.xml: Adjust link to ThreadSanitizer.
3343 2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
3345         * doc/xml/manual/io.xml: Update link to groups.google.com.
3346         Tweak link description.
3348 2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
3350         * doc/xml/manual/profile_mode.xml: Fix link.
3352 2017-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
3354         * doc/xml/manual/policy_data_structures.xml: Simplify and
3355         standardize references to boost.org.
3356         * doc/xml/manual/policy_data_structures_biblio.xml: Ditto.
3357         * doc/xml/manual/shared_ptr.xml: Ditto.
3359 2017-02-16  Jonathan Wakely  <jwakely@redhat.com>
3361         PR libstdc++/60936
3362         * src/c++11/snprintf_lite.cc (__concat_size_t): Calculate length
3363         written to buffer, not length remaining in buffer.
3365 2017-02-15  Tim Shen  <timshen@google.com>
3367         PR libstdc++/78723
3368         * include/std/variant (operator<(), operator>(), operator<=(),
3369         operator>=(), operator==(), operator!=()): Implement P0393R3.
3370         * testsuite/20_util/variant/compile.cc: Adjust tests.
3371         * testsuite/20_util/variant/run.cc: Adjust tests.
3373 2017-02-15  Tim Shen  <timshen@google.com>
3375         PR libstdc++/79513
3376         * include/std/variant (visit()): Forward variant types to the return
3377         type detection code.
3378         * testsuite/20_util/variant/compile.cc: Add test cases.
3380 2017-02-13  H.J. Lu  <hongjiu.lu@intel.com>
3382         PR libstdc++/79348
3383         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
3385 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
3387         PR libstdc++/79348
3388         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3389         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
3390         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise.
3391         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
3392         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Likewise.
3393         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
3394         * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Likewise.
3395         * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise.
3396         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.
3398 2017-02-13  Jonathan Wakely  <jwakely@redhat.com>
3400         PR libstdc++/79486
3401         * include/std/future (__future_base::_Task_state::_M_run)
3402         (__future_base::_Task_state::_M_run_delayed): Use lvalue types in
3403         result_of expressions.
3404         * testsuite/30_threads/packaged_task/79486.cc: New.
3406 2017-02-11  Jonathan Wakely  <jwakely@redhat.com>
3408         PR libstdc++/79467
3409         * include/bits/shared_ptr_base.h (__shared_ptr(_Yp*, _Deleter))
3410         (__shared_ptr(_Yp*, _Deleter, _Alloc)): Use lvalue types in
3411         __is_callable check.
3412         * testsuite/20_util/shared_ptr/cons/79467.cc: New.
3414         * include/bits/atomic_base.h: Re-indent.
3416 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
3418         * doc/xml/manual/profile_mode.xml: Update a paper reference.
3420 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
3422         * src/c++11/snprintf_lite.cc (__err): Use https for bug reporting.
3424 2017-02-08  Jonathan Wakely  <jwakely@redhat.com>
3426         * doc/xml/manual/policy_data_structures.xml: Fix spelling of author's
3427         name.
3428         * doc/xml/manual/policy_data_structures_biblio.xml: Likewise. Remove
3429         broken links to texts that are no longer online.
3430         * doc/xml/manual/profile_mode.xml: Update links to CGO 2009 paper and
3431         LCPC 2006 paper.
3432         * doc/xml/manual/using.xml: Update links to memory model information.
3433         * doc/xml/manual/using_exceptions.xml: Update link to "Appendix E:
3434         Standard-Library Exception Safety".
3435         * doc/html/*: Regenerate.
3437 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
3439         * doc/xml/manual/profile_mode.xml: Unbreak link to
3440         "Optimizing Sorting with Machine Learning Algorithms".
3442 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
3444         * src/c++11/snprintf_lite.cc (__err): Update bug reporting URL.
3446 2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
3448         * doc/xml/manual/abi.xml: Update link to "Sun Studio 11: C++
3449         Migration Guide".
3451 2017-02-07  Gerald Pfeifer  <gerald@pfeifer.com>
3453         * doc/html/ext/lwg-active.html: Remove.
3454         * doc/html/ext/lwg-closed.html: Ditto.
3455         * doc/html/ext/lwg-defects.html: Ditto.
3457         * doc/Makefile.am (xml_extradir): Remove.
3458         (xml_extra): Ditto.
3459         (stamp-html-docbook-lwg): Remove recipe...
3460         (stamp-html-docbook-data): ...and its use here.
3461         * doc/Makefile.in: Regenerate.
3463         * doc/xml/manual/intro.xml: Shorten two paragraphs explaining
3464         the relationship to the upstream working group.
3465         Replace a local link to ../ext/lwg-active.html by the upstream one.
3466         Replace all reference to ../ext/lwg-defects.html by a new entity
3467         &DR; which refers to the upstream address.
3469 2017-02-07  Gerald Pfeifer  <gerald@pfeifer.com>
3471         * doc/xml/manual/status_cxx2017.xml: Fix link to N4284.
3473 2017-02-06  Jonathan Wakely  <jwakely@redhat.com>
3475         PR libstdc++/79323
3476         * testsuite/20_util/duration/literals/range.cc: Prune extra output
3477         at -O0.
3479 2017-02-06  Gerald Pfeifer  <gerald@pfeifer.com>
3481         * doc/xml/manual/documentation_hacking.xml: Update URL of the
3482         DocBook Element Reference.  Use that term as link description
3483         instead of "online".
3484         epubcheck has moved to GitHub.
3485         Remove obsolete link to DocBook Publishing Tools.
3487 2017-02-03  Jonathan Wakely  <jwakely@redhat.com>
3489         PR libstdc++/66145
3490         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Restore ABI override
3491         so new ios::failure can be caught even when old ABI is the default.
3492         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
3493         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
3494         exceptions_failbit.cc: Likewise.
3495         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
3496         exceptions_failbit.cc: Likewise.
3497         * testsuite/27_io/basic_istream/extractors_other/char/
3498         exceptions_null.cc: Likewise.
3499         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
3500         exceptions_null.cc: Likewise.
3501         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
3502         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
3503         * testsuite/27_io/basic_ostream/inserters_other/char/
3504         exceptions_null.cc: Likewise.
3505         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
3506         exceptions_null.cc: Likewise.
3507         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
3509         PR libstdc++/60936
3510         * src/c++11/Makefile.am: Add new files.
3511         * src/c++11/Makefile.in: Regenerate.
3512         * src/c++11/cow-string-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
3513         (operator<<, operator>>, getline): Move explicit instantiations to ...
3514         * src/c++11/cow-string-io-inst.cc: ... new file.
3515         * src/c++11/cow-wstring-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
3516         (operator<<, operator>>, getline): Move explicit instantiations to ...
3517         * src/c++11/cow-wstring-io-inst.cc: ... new file.
3518         * src/c++11/functexcept.cc (__throw_ios_failure, __throw_system_error)
3519         (__throw_future_error, __throw_bad_function_call):
3520         (__throw_regex_error): Move functions for C++11 exceptions to the
3521         files that define the exception types.
3522         * src/c++11/functional.cc (__throw_bad_function_call): Move here.
3523         * src/c++11/future.cc (__throw_future_error): Likewise.
3524         * src/c++11/ios.cc (__throw_ios_failure): Likewise.
3525         * src/c++11/regex.cc (__throw_regex_error): Likewise.
3526         * src/c++11/snprintf_lite.cc (__concat_size_t): Print decimal
3527         representation directly instead of calling __int_to_char.
3528         * src/c++11/sso_string.cc (__sso_string): New file for definition
3529         of __sso_string type.
3530         * src/c++11/string-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
3531         explicit instantiations of narrow string I/O functions.
3532         * src/c++11/system_error.cc (__throw_system_error): Move here.
3533         (__sso_string): Move to new file.
3534         * src/c++11/wstring-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
3535         explicit instantiations of wide string I/O functions.
3536         * src/c++98/misc-inst.cc [_GLIBCXX_USE_CXX11_ABI] (operator<<)
3537         (operator>>, getline): Remove explicit instantiations from here.
3539 2017-02-02  H.J. Lu  <hongjiu.lu@intel.com>
3541         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
3543 2017-02-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3545         * configure.host: Separate Solaris/SPARC and x86 baselines.
3546         * config/abi/post/solaris2.10/baseline_symbols.txt: Move ...
3547         * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: ... here.
3548         * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Move ...
3549         * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
3550         ... here.
3551         * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Move ...
3552         * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: ... here.
3553         * config/abi/post/i386-solaris2.10/baseline_symbols.txt: New file.
3554         * config/abi/post/solaris2.11/baseline_symbols.txt: Move ...
3555         * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: ... here.
3556         * config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Move ...
3557         * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
3558         ... here.
3559         * config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Move ...
3560         * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: ... here.
3561         * config/abi/post/i386-solaris2.11/baseline_symbols.txt: New file.
3563         * config/abi/post/solaris2.10/baseline_symbols.txt: Regenerate.
3564         * config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
3565         * config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
3566         * config/abi/post/solaris2.11/baseline_symbols.txt: Likewise.
3567         * config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Likewise.
3568         * config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Likewise.
3570 2017-02-01  Jonathan Wakely  <jwakely@redhat.com>
3572         PR libstdc++/78346
3573         * include/bits/predefined_ops.h (_Iter_equals_iter): Store iterator
3574         not its referent.
3575         (_Iter_comp_to_iter): Likewise.
3576         * testsuite/25_algorithms/search/78346.cc: New test.
3578         PR libstdc++/79254
3579         * config/abi/pre/gnu.ver: Remove recently added symbols.
3580         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
3581         (basic_string::_M_copy_assign): Remove.
3582         (basic_string::operator=(const basic_string&)): Don't dispatch to
3583         _M_copy_assign. If source object is small just deallocate, otherwise
3584         perform new allocation before making any changes.
3585         * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
3586         (basic_string::_M_copy_assign(const basic_string&, true_type)):
3587         Remove.
3588         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
3589         Test cases where the allocators are equal or the string is small.
3590         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3591         Likewise.
3593 2017-01-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
3595         Implement LWG 2825, LWG 2756 breaks class template argument
3596         deduction for optional.
3597         * include/std/optional: Add a deduction guide.
3598         * testsuite/20_util/optional/cons/deduction_guide.cc: New.
3600 2017-01-27  Jonathan Wakely  <jwakely@redhat.com>
3602         PR libstdc++/79254
3603         * config/abi/pre/gnu.ver: Add new symbols.
3604         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
3605         (basic_string::_M_copy_assign): New overloaded functions to perform
3606         copy assignment.
3607         (basic_string::operator=(const basic_string&)): Dispatch to
3608         _M_copy_assign.
3609         * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
3610         (basic_string::_M_copy_assign(const basic_string&, true_type)):
3611         Define, performing rollback on exception.
3612         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
3613         Test exception-safety guarantee.
3614         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3615         Likewise.
3616         * testsuite/util/testsuite_allocator.h (uneq_allocator::swap): Make
3617         std::swap visible.
3619 2017-01-26  Jonathan Wakely  <jwakely@redhat.com>
3621         PR libstdc++/70607
3622         * include/tr1/complex (conj): Remove using-declaration and restore
3623         overloads, reverting previous change.
3625         * testsuite/23_containers/list/operations/78389.cc: Fix for C++11
3626         mode.
3627         * testsuite/23_containers/priority_queue/requirements/constructible.cc:
3628         Mark as unsupported in C++98 mode.
3629         * testsuite/23_containers/queue/requirements/constructible.cc:
3630         Likewise.
3631         * testsuite/23_containers/stack/requirements/constructible.cc:
3632         Likewise.
3633         * testsuite/25_algorithms/make_heap/movable.cc: Fix for C++11 mode.
3635         PR libstdc++/79243
3636         * include/bits/c++config (literals::string_view_literals::__7): Add.
3637         Only declare versioned namespaces for the relevant C++ dialects.
3638         * include/experimental/bits/erase_if.h (fundamentals_v2::__detail):
3639         Add versioning macros.
3640         * include/experimental/bits/lfts_config.h:
3641         (fundamentals_v1::__detail::__7, fundamentals_v2::__detail::__7): Add.
3642         * include/experimental/string_view (fundamentals_v2::__detail):
3643         Add versioning macros.
3644         (fundamentals_v2::__detail::__identity): Remove.
3645         (fundamentals_v2::__detail::__idt): Use common_type instead of
3646         __detail::__identity.
3647         * include/std/string_view (__detail::__identity, __detail::__idt):
3648         Likewise.
3649         (literals::string_view_literals): Fix nesting of versioning macros.
3651         PR libstdc++/79190
3652         * libsupc++/del_opa.cc (operator delete(void*, std::align_val_t))
3653         [!_GLIBCXX_HAVE_ALIGNED_ALLOC && !_GLIBCXX_HAVE_POSIX_MEMALIGN
3654         && !_GLIBCXX_HAVE_MEMALIGN && !_GLIBCXX_HAVE__ALIGNED_MALLOC]:
3655         Retrieve original pointer value allocated by malloc.
3656         * libsupc++/new_opa.cc [!_GLIBCXX_HAVE_ALIGNED_ALLOC
3657         && !_GLIBCXX_HAVE_POSIX_MEMALIGN && !_GLIBCXX_HAVE_MEMALIGN
3658         && !_GLIBCXX_HAVE__ALIGNED_MALLOC] (aligned_alloc(size_t, size_t)):
3659         Define, adjusting pointer value allocated by malloc and storing for
3660         retrieval by operator delete.
3662 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
3664         * libsupc++/eh_atomics.h: Update copyright years.
3665         * testsuite/20_util/unique_ptr/cons/default.cc: Update copyright years.
3667 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
3669         PR libstdc++/61791
3670         PR libstdc++/70607
3671         * include/std/complex (real(T), imag(T)): Add _GLIBCXX_CONSTEXPR.
3672         (proj(T), conj(T)): Change return types per DR 1522.
3673         * include/tr1/complex (conj): Remove overloads and use std::conj.
3674         * testsuite/26_numerics/complex/dr781_dr1137.cc: Rename to...
3675         * testsuite/26_numerics/complex/dr781.cc: ... this, and update.
3676         * testsuite/26_numerics/complex/value_operations/constexpr2.cc: Test
3677         real(T) and imag(T). Allow testing for C++11 too.
3679 2017-01-24  Jonathan Wakely  <jwakely@redhat.com>
3681         PR libstdc++/79206
3682         * include/experimental/string_view (operator==): Check sizes first.
3683         * include/std/string_view (operator==): Likewise.
3685 2017-01-23  Jonathan Wakely  <jwakely@redhat.com>
3687         * testsuite/experimental/array/make_array.cc: Restore <functional>
3688         inclusion.
3690 2017-01-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
3692         * testsuite/29_atomics/atomic/69301.cc: Require atomic builtins.
3694 2017-01-23  Jonathan Wakely  <jwakely@redhat.com>
3696         PR libstdc++/79195
3697         * include/experimental/array (__make_array_elem): New class template
3698         and partial specialization.
3699         (__is_reference_wrapper): Move into __make_array_elem specialization.
3700         (make_array): Use __make_array_elem to determine element type and move
3701         static assertion into specialization. Qualify std::forward call.
3702         (to_array): Add exception specifiation.
3703         * testsuite/experimental/array/make_array.cc: Test argument types
3704         without a common type.
3705         * testsuite/experimental/array/neg.cc: Adjust expected error message.
3707 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
3709         * doc/xml/manual/debug.xml: code.google.com uses https now.
3711 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
3713         * doc/xml/manual/test.xml: Fix link into gccint online manual.
3715 2017-01-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
3717         Make poisoned hashes SFINAE away the call operator of the hash.
3718         * include/bits/functional_hash.h
3719         (__poison_hash::__enable_hash_call): New.
3720         * include/std/optional (__optional_hash_call_base): New.
3721         (hash<optional<_Tp>>): Derive from the new base,
3722         move the hash function into that base.
3723         * include/std/variant (__variant_hash_call_base_impl): New.
3724         (__variant_hash_call_base): Likewise.
3725         (hash<variant<_Types...>>): Derive from the new base,
3726         move the hash function into that base.
3727         * testsuite/20_util/optional/hash.cc: Add tests for is_callable.
3728         * testsuite/20_util/variant/hash.cc: Likewise.
3730 2017-01-20  Joe Seymour  <joe.s@somniumtech.com>
3732         * acinclude.m4 (GLIBCXX_CHECK_SIZE_T_MANGLING): Support uint20_t.
3733         * configure: Regenerate.
3735 2017-01-20  Jonathan Wakely  <jwakely@redhat.com>
3737         PR libstdc++/69240
3738         * include/bits/random.h (uniform_real_distribution::param_type)
3739         (normal_distribution::param_type, lognormal_distribution::param_type)
3740         (gamma_distribution::param_type, chi_squared_distribution::param_type)
3741         (cauchy_distribution::param_type, fisher_f_distribution::param_type)
3742         (student_t_distribution::param_type)
3743         (bernoulli_distribution::param_type, binomial_distribution::param_type)
3744         (geometric_distribution::param_type)
3745         (negative_binomial_distribution::param_type)
3746         (poisson_distribution::param_type)
3747         (exponential_distribution::param_type)
3748         (weibull_distribution::param_type)
3749         (extreme_value_distribution::param_type)
3750         (discrete_distribution::param_type)
3751         (piecewise_constant_distribution::param_type)
3752         (piecewise_linear_distribution::param_type): Define operator!=.
3753         * include/bits/uniform_int_dist.h
3754         (uniform_int_distribution::param_type): Likewise.
3755         * include/ext/random (beta_distribution::param_type)
3756         (rice_distribution::param_type, nakagami_distribution::param_type)
3757         (pareto_distribution::param_type, k_distribution::param_type)
3758         (arcsine_distribution::param_type, hoyt_distribution::param_type)
3759         (triangular_distribution::param_type)
3760         (von_mises_distribution::param_type)
3761         (hypergeometric_distribution::param_type)
3762         (logistic_distribution::param_type)
3763         (uniform_on_sphere_distribution::param_type)
3764         (uniform_inside_sphere_distribution::param_type): Likewise.
3765         * testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc:
3766         Test construction with param_type.
3767         * testsuite/26_numerics/random/binomial_distribution/cons/parms.cc:
3768         Likewise.
3769         * testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc:
3770         Likewise.
3771         * testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc:
3772         Likewise.
3773         * testsuite/26_numerics/random/exponential_distribution/cons/parms.cc:
3774         Likewise.
3775         * testsuite/26_numerics/random/extreme_value_distribution/cons/
3776         parms.cc: Likewise.
3777         * testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc:
3778         Likewise.
3779         * testsuite/26_numerics/random/gamma_distribution/cons/parms.cc:
3780         Likewise.
3781         * testsuite/26_numerics/random/geometric_distribution/cons/parms.cc:
3782         Likewise.
3783         * testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc:
3784         Likewise.
3785         * testsuite/26_numerics/random/negative_binomial_distribution/cons/
3786         parms.cc: Likewise.
3787         * testsuite/26_numerics/random/normal_distribution/cons/parms.cc:
3788         Likewise.
3789         * testsuite/26_numerics/random/poisson_distribution/cons/parms.cc:
3790         Likewise.
3791         * testsuite/26_numerics/random/student_t_distribution/cons/parms.cc:
3792         Likewise.
3793         * testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc:
3794         Likewise.
3795         * testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc:
3796         Likewise.
3797         * testsuite/26_numerics/random/weibull_distribution/cons/parms.cc:
3798         Likewise.
3799         * testsuite/ext/random/arcsine_distribution/cons/parms.cc: Likewise.
3800         * testsuite/ext/random/beta_distribution/cons/parms.cc: Likewise.
3801         * testsuite/ext/random/hoyt_distribution/cons/parms.cc: Likewise.
3802         * testsuite/ext/random/hypergeometric_distribution/cons/parms.cc:
3803         Likewise.
3804         * testsuite/ext/random/k_distribution/cons/parms.cc: Likewise.
3805         * testsuite/ext/random/logistic_distribution/cons/parms.cc: Likewise.
3806         * testsuite/ext/random/nakagami_distribution/cons/parms.cc: Likewise.
3807         * testsuite/ext/random/normal_mv_distribution/cons/parms.cc: Likewise.
3808         * testsuite/ext/random/pareto_distribution/cons/parms.cc: Likewise.
3809         * testsuite/ext/random/rice_distribution/cons/parms.cc: Likewise.
3810         * testsuite/ext/random/triangular_distribution/cons/parms.cc:
3811         Likewise.
3812         * testsuite/ext/random/uniform_inside_sphere_distribution/cons/
3813         parms.cc: Likewise.
3814         * testsuite/ext/random/von_mises_distribution/cons/parms.cc: Likewise.
3816         PR libstdc++/72792
3817         * include/bits/alloc_traits.h (__allocator_traits_base::__diff_type)
3818         (__allocator_traits_base::__size_type): Remove.
3819         (allocator_traits::_Ptr): New class template to detect const and void
3820         pointer types without instantiating pointer_traits::rebind
3821         unnecessarily.
3822         (allocator_traits::_Diff): Likewise for detecting difference_type.
3823         (allocator_traits::_Size): New class template to detect size_type
3824         without instantiating make_unsigned unnecessarily.
3825         * include/bits/ptr_traits.h (pointer_traits::element_type): Use
3826         __detected_or_t instead of __detected_or_t_.
3827         * include/std/type_traits (__detected_or_t_): Remove.
3828         * testsuite/20_util/allocator_traits/members/pointers.cc: New test.
3830         PR libstdc++/72792
3831         PR libstdc++/72793
3832         * include/bits/alloc_traits.h (__allocator_traits_base::__rebind):
3833         Replace with class template using void_t.
3834         (__alloc_rebind): Define in terms of
3835         __allocator_traits_base::__rebind.
3836         (allocator_traits): Remove unconditional static_assert for
3837         rebind_alloc.
3838         * include/bits/ptr_traits.h (__replace_first_arg): Remove type member.
3839         (pointer_traits::__rebind): Replace with class template using void_t.
3840         (pointer_traits::rebind): Define in terms of __rebind.
3841         (pointer_traits): Remove unconditional static_assert for rebind.
3842         * testsuite/20_util/allocator_traits/members/rebind_alloc.cc: New test.
3843         * testsuite/20_util/pointer_traits/rebind.cc: New test.
3845         PR libstdc++/69321
3846         * include/experimental/any (__any_caster): Avoid instantiating
3847         manager function for types that can't be stored in any.
3848         * include/std/any (__any_caster): Likewise.
3849         * testsuite/20_util/any/misc/any_cast.cc: Test non-copyable type.
3850         * testsuite/experimental/any/misc/any_cast.cc: Likewise.
3852         PR libstdc++/64903
3853         * include/bits/stl_algo.h (is_partitioned): Use increment instead of
3854         std::advance.
3856 2017-01-19  Jonathan Wakely  <jwakely@redhat.com>
3858         PR libstdc++/79156
3859         * include/bits/shared_ptr_base.h (__enable_shared_from_this_base):
3860         Fix return type.
3861         (__enable_shared_from_this): Declare __shared_ptr as a friend.
3862         * testsuite/ext/shared_ptr/1.cc: New test.
3864         PR libstdc++/64903
3865         * include/bits/stl_algo.h (is_partitioned): Don't retest the partition
3866         point.
3867         * testsuite/25_algorithms/is_partitioned/2.cc: New test.
3869         * doc/xml/manual/abi.xml: Fix typo.
3870         * doc/html/manual/abi.html: Likewise.
3872         PR libstdc++/67085
3873         * include/bits/predefined_ops.h (_Iter_less_val, _Val_less_iter): Add
3874         converting constructors from _Iter_less_iter.
3875         (_Iter_comp_val, _Val_comp_iter): Add converting constructors from
3876         _Iter_comp_iter.
3877         (__iter_comp_val(_Iter_comp_iter<C>): Use converting constructor.
3878         (__val_comp_iter(_Iter_comp_iter<C>): Likewise.
3879         * include/bits/stl_heap.h (__is_heap_until, __push_heap, __pop_heap)
3880         (__make_heap, __sort_heap): Change _Compare parameters to references.
3881         (__is_heap, push_heap, __adjust_heap, __pop_heap, pop_heap)
3882         (__make_heap, make_heap, sort_heap, is_heap_until): Pass comparison
3883         functions as lvalues.
3884         (is_heap): Call __is_heap_until directly to avoid copying __comp.
3885         * testsuite/23_containers/priority_queue/67085.cc: Adjust test to
3886         count copies during construction with empty sequence.
3888         PR libstdc++/67085
3889         * include/bits/stl_heap.h (__is_heap): Use _GLIBCXX_MOVE.
3890         (__make_heap, __sort_heap): Don't use _GLIBCXX_MOVE inside loops.
3891         * testsuite/23_containers/priority_queue/67085.cc: Adjust expected
3892         number of copies.
3893         * testsuite/25_algorithms/make_heap/movable.cc: New test.
3895         PR libstdc++/67085
3896         * include/bits/stl_heap.h (push_heap, __adjust_heap, __pop_heap)
3897         (pop_heap, __make_heap, make_heap, __sort_heap, sort_heap): Use
3898         _GLIBCXX_MOVE when passing comparison function to other functions.
3899         (is_heap_until, is_heap): Use std::move when passing comparison
3900         function.
3901         * testsuite/23_containers/priority_queue/67085.cc: New test.
3903         PR libstdc++/78905
3904         * doc/xml/manual/abi.xml (abi.versioning.history): Add markup to
3905         macro names, filenames, and literal values. Document _GLIBCXX_RELEASE.
3906         Document that the deprecated _GLIBCXX_VERSION macro was removed for
3907         the 4.0.0 release.
3908         * doc/html/*: Regenerate.
3909         * include/Makefile.am (_GLIBCXX_RELEASE): Set value.
3910         * include/Makefile.in: Regenerate.
3911         * include/bits/c++config (_GLIBCXX_RELEASE): Add #define.
3912         * testsuite/ext/profile/mutex_extensions_neg.cc: Use lineno of 0 in
3913         dg-error.
3915 2017-01-18  Jonathan Wakely  <jwakely@redhat.com>
3917         PR libstdc++/69301
3918         * include/std/atomic (atomic<T>::load, atomic<T>::exchange): Use
3919         aligned buffer instead of default-initialized variable.
3920         * testsuite/29_atomics/atomic/69301.cc: New test.
3921         * include/experimental/memory (observer_ptr::release): Use reserved
3922         name.
3923         * include/ext/pointer.h (_Pointer_adapter::operator++(int))
3924         (_Pointer_adapter::operator--(int)): Likewise.
3926         PR libstdc++/68925
3927         * include/experimental/random (randint): Use temporary instead of
3928         thread_local static.
3930 2017-01-17  Joshua Conner  <joshconner@google.com>
3932         * crossconfig.m4: Add fuchsia OS.
3933         * configure: Regenerate.
3935 2017-01-17  Jonathan Wakely  <jwakely@redhat.com>
3937         PR libstdc++/69699
3938         * doc/xml/manual/abi.xml (abi.versioning.history): Explain why the
3939         __GLIBCXX__ macro is not useful. Remove redundant date information
3940         and link to the GCC release timeline.
3941         (abi.versioning.active): Move partial sentence into the previous
3942         paragraph.
3943         * doc/html/*: Regenerate.
3945         PR libstdc++/79114
3946         * libsupc++/nested_exception.h (throw_with_nested): Use decay instead
3947         of remove_reference.
3948         * testsuite/18_support/nested_exception/79114.cc: New test.
3950 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
3952         PR other/79046
3953         * configure.ac: Add GCC_BASE_VER.
3954         * fragment.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
3955         get version from BASE-VER file.
3956         * po/Makefile.in: Regenerated.
3957         * libsupc++/Makefile.in: Regenerated.
3958         * testsuite/Makefile.in: Regenerated.
3959         * src/Makefile.in: Regenerated.
3960         * configure: Regenerated.
3961         * Makefile.in: Regenerated.
3962         * include/Makefile.in: Regenerated.
3963         * doc/Makefile.in: Regenerated.
3964         * python/Makefile.in: Regenerated.
3965         * src/c++11/Makefile.in: Regenerated.
3966         * src/c++98/Makefile.in: Regenerated.
3967         * src/filesystem/Makefile.in: Regenerated.
3969 2017-01-16  Jonathan Wakely  <jwakely@redhat.com>
3971         PR libstdc++/66145
3972         * src/c++11/functexcept.cc: Use new ABI for std::ios_base::failure
3973         exceptions.
3974         * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Don't override ABI
3975         for test, so new ios::failure can be caught.
3976         * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
3977         * testsuite/27_io/basic_istream/extractors_arithmetic/char/
3978         exceptions_failbit.cc: Likewise.
3979         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
3980         exceptions_failbit.cc: Likewise.
3981         * testsuite/27_io/basic_istream/extractors_other/char/
3982         exceptions_null.cc: Likewise.
3983         * testsuite/27_io/basic_istream/extractors_other/wchar_t/
3984         exceptions_null.cc: Likewise.
3985         * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
3986         * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
3987         * testsuite/27_io/basic_ostream/inserters_other/char/
3988         exceptions_null.cc: Likewise.
3989         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/
3990         exceptions_null.cc: Likewise.
3991         * testsuite/27_io/ios_base/storage/2.cc: Likewise.
3993         PR libstdc++/78702
3994         * include/bits/locale_classes.h (locale::facet::__shim): Change from
3995         private to protected.
3996         * src/c++11/cxx11-shim_facets.cc (__shim_accessor): Define helper to
3997         make locale::facet::__shim accessible.
3999 2017-01-16  Ville Voutilainen  <ville.voutilainen@gmail.com>
4001         PR libstdc++/78389
4002         * include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments.
4003         (merge(list&&, _StrictWeakOrdering)): Likewise.
4004         * testsuite/23_containers/list/operations/78389.cc: Add
4005         better test for the sizes.
4007 2017-01-14  Jonathan Wakely  <jwakely@redhat.com>
4009         * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
4010         Skip test when -D_GLIBCXX_PROFILE mode is included in options.
4011         * testsuite/23_containers/map/modifiers/extract.cc: Likewise.
4012         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
4013         Likewise.
4014         * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
4015         * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
4016         * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
4017         * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
4018         * testsuite/23_containers/unordered_map/modifiers/extract.cc:
4019         Likewise.
4020         * testsuite/23_containers/unordered_multimap/modifiers/extract.cc::
4021         Likewise.
4022         * testsuite/23_containers/unordered_multiset/modifiers/extract.cc::
4023         Likewise.
4024         * testsuite/23_containers/unordered_set/modifiers/extract.cc:
4025         Likewise.
4026         * testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
4027         Likewise.
4028         * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
4029         * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
4030         * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
4031         * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
4032         * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
4033         * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
4034         * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
4035         * testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
4036         * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
4037         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
4038         * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
4039         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
4040         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
4042 2017-01-13  Jonathan Wakely  <jwakely@redhat.com>
4044         PR libstdc++/65411
4045         * config/io/basic_file_stdio.cc (__basic_file<char>::close()): Don't
4046         retry fclose on EINTR.
4048         * include/profile/base.h: Remove unused header that leads to header
4049         cycle in C++17 mode.
4051         PR libstdc++/79075
4052         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string):
4053         Make _If_sv private.
4054         [!_GLIBCXX_USE_CXX11_ABI] (basic_string): Add member functions taking
4055         basic_string_view arguments.
4057         PR libstdc++/79075
4058         * testsuite/lib/libstdc++.exp (check_v3_target_filesystem_ts): Remove
4059         redundant option from cxxflags.
4060         (check_effective_target_cxx11-abi): Define.
4061         * testsuite/21_strings/basic_string/allocator/71964.cc: Use cxx11-abi
4062         effective target.
4063         * testsuite/21_strings/basic_string/allocator/char/copy.cc: Likewise.
4064         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
4065         Likewise.
4066         * testsuite/21_strings/basic_string/allocator/char/minimal.cc:
4067         Likewise.
4068         * testsuite/21_strings/basic_string/allocator/char/move.cc: Likewise.
4069         * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
4070         Likewise.
4071         * testsuite/21_strings/basic_string/allocator/char/noexcept.cc:
4072         Likewise.
4073         * testsuite/21_strings/basic_string/allocator/char/swap.cc: Likewise.
4074         * testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
4075         Likewise.
4076         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
4077         Likewise.
4078         * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
4079         Likewise.
4080         * testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
4081         Likewise.
4082         * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
4083         Likewise.
4084         * testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
4085         Likewise.
4086         * testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
4087         Likewise.
4088         * testsuite/23_containers/list/61347.cc: Likewise.
4089         * testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
4090         * testsuite/27_io/ios_base/failure/cxx11.cc: Likewise.
4092 2017-01-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
4094         PR libstdc++/78389
4095         * include/bits/list.tcc (merge(list&&)):
4096         Adjust list sizes if the comparator throws.
4097         (merge(list&&, _StrictWeakOrdering)): Likewise.
4098         (sort()): Splice elements back from the scratch buffers
4099         if the comparator throws.
4100         (sort(_StrictWeakOrdering)): Likewise.
4101         * testsuite/23_containers/list/operations/78389.cc: New.
4103 2017-01-13  Jonathan Wakely  <jwakely@redhat.com>
4105         * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Mark
4106         XFAIL for C++17 until node reinsertion supports fancy pointers.
4108         PR libstdc++/78361
4109         * testsuite/20_util/add_pointer/value.cc: Test forming function
4110         pointers.
4112 2017-01-13  Michael Brune  <lucdanton@free.fr>
4114         PR libstdc++/78361
4115         * include/std/type_traits (__is_referenceable): Handle noexcept
4116         function types.
4118 2017-01-12  Jonathan Wakely  <jwakely@redhat.com>
4120         PR libstdc++/77528
4121         * include/bits/stl_queue.h (queue, priority_queue): Remove default
4122         member-initializers and define default constructors as templates with
4123         constraints.
4124         * include/bits/stl_stack.h (stack): Likewise.
4125         * testsuite/23_containers/priority_queue/requirements/constructible.cc:
4126         New.
4127         * testsuite/23_containers/priority_queue/requirements/
4128         explicit_instantiation/1.cc: Test more instantiations.
4129         * testsuite/23_containers/priority_queue/requirements/
4130         explicit_instantiation/1_c++98.cc: Likewise.
4131         * testsuite/23_containers/queue/requirements/constructible.cc: New.
4132         * testsuite/23_containers/stack/requirements/constructible.cc: New.
4134         PR libstdc++/66284
4135         * doc/xml/manual/intro.xml: Document LWG 2781 change.
4136         * doc/html/*: Regenerate.
4137         * include/std/functional (_Function_base::_Ref_manager): Remove.
4138         (_Function_handler): Remove partial specializations for
4139         reference_wrapper.
4140         (function::target): Remove special case for const qualification.
4141         * testsuite/20_util/function/6.cc: Adjust tests for target type.
4142         * testsuite/20_util/function/7.cc: Likewise.
4143         * testsuite/20_util/function/8.cc: Likewise.
4145 2017-01-11  Jonathan Wakely  <jwakely@redhat.com>
4147         PR libstdc++/78134
4148         * include/bits/stl_map.h (map::lower_bound, map::upper_bound)
4149         (map::equal_range): Fix return type of heterogeneous overloads.
4150         * include/bits/stl_multimap.h (multimap::lower_bound)
4151         (multimap::upper_bound, multimap::equal_range): Likewise.
4152         * include/bits/stl_multiset.h (multiset::lower_bound)
4153         (multiset::upper_bound, multiset::equal_range): Likewise.
4154         * include/bits/stl_set.h (set::lower_bound, set::upper_bound)
4155         (set::equal_range): Likewise.
4156         * testsuite/23_containers/map/operations/2.cc
4157         * testsuite/23_containers/multimap/operations/2.cc
4158         * testsuite/23_containers/multiset/operations/2.cc
4159         * testsuite/23_containers/set/operations/2.cc
4161         PR libstdc++/78273
4162         * include/bits/stl_map.h (map::count<_Kt>(const _Kt&)): Don't assume
4163         the heterogeneous comparison can only find one match.
4164         * include/bits/stl_set.h (set::count<_Kt>(const _Kt&)): Likewise.
4165         * testsuite/23_containers/map/operations/2.cc: Test count works with
4166         comparison function that just partitions rather than sorting.
4167         * testsuite/23_containers/set/operations/2.cc: Likewise.
4169 2017-01-11  Ville Voutilainen  <ville.voutilainen@gmail.com>
4171         Reduce the size of variant, it doesn't need an index of
4172         type size_t internally.
4173         * include/std/variant (parse_numbers.h): New include.
4174         (__select_index): New.
4175         (_Variant_storage<false, _Types...>::_M_reset_impl): Use
4176         _index_type for comparison with variant_npos.
4177         (_Variant_storage<false, _Types...>::__index_type): New.
4178         (_Variant_storage<false, _Types...>::_M_index): Change the
4179         type from size_t to __index_type.
4180         (_Variant_storage<true, _Types...>::__index_type): New.
4181         (_Variant_storage<true, _Types...>::_M_index): Change the
4182         type from size_t to __index_type.
4183         (_Variant_base::_M_valid): Use _Storage::__index_type
4184         for comparison with variant_npos.
4185         (variant::index): Use _Base::_Storage::__index_type
4186         for comparison with variant_npos.
4187         * testsuite/20_util/variant/index_type.cc: New.
4189 2017-01-10  Jonathan Wakely  <jwakely@redhat.com>
4191         * testsuite/18_support/exception_ptr/60612-unexpected.cc: Adjust
4192         effective target selector to prevent running in C++17 mode.
4194         PR libstdc++/77528
4195         * include/bits/stl_queue.h (queue::c): Add default member initializer.
4196         (queue::queue()): Add constructor and define as defaulted.
4197         (queue::queue(_Sequence&&)): Remove default argument.
4198         (priority_queue::c, priority_queue::comp): Add default member
4199         initializers.
4200         (priority_queue::priority_queue()): Add constructor and define as
4201         defaulted.
4202         (priority_queue::priority_queue(const _Compare&, _Sequence&&)):
4203         Remove default argument for first parameter.
4204         * include/bits/stl_stack.h (stack::c): Add default member initializer.
4205         (stack::stack()): Add constructor and define as defaulted.
4206         (stack::stack(const _Sequence&)): Remove default argument.
4207         * testsuite/23_containers/priority_queue/requirements/
4208         explicit_instantiation/1.cc: Test explicit instantiation with
4209         non-DefaultConstructible sequence.
4210         * testsuite/23_containers/priority_queue/77528.cc: New test.
4211         * testsuite/23_containers/priority_queue/requirements/
4212         explicit_instantiation/1_c++0x.cc: Replace with 1_c++98.cc.
4213         * testsuite/23_containers/queue/77528.cc: New test.
4214         * testsuite/23_containers/queue/requirements/explicit_instantiation/
4215         1.cc: Test explicit instantiation with non-DefaultConstructible
4216         sequence.
4217         * testsuite/23_containers/queue/requirements/explicit_instantiation/
4218         1_c++0x.cc: Replace with 1_c++98.cc.
4219         * testsuite/23_containers/stack/77528.cc: New test.
4220         * testsuite/23_containers/stack/requirements/explicit_instantiation/
4221         1.cc: Test explicit instantiation with non-DefaultConstructible
4222         sequence.
4223         * testsuite/23_containers/stack/requirements/explicit_instantiation/
4224         1_c++0x.cc: Replace with 1_c++98.cc.
4226 2017-01-10  Felipe Magno de Almeida <felipe@expertisesolutions.com.br>
4228         * include/bits/locale_facets_nonio.tcc
4229         (time_get::_M_extract_via_format): Avoid compilation errors with
4230         non-standard struct tm.
4232 2017-01-10  François Dumont  <fdumont@gcc.gnu.org>
4233             Jonathan Wakely  <jwakely@redhat.com>
4235         * python/libstdcxx/v6/printers.py (_versioned_namespace): Define.
4236         (is_specialization, strip_versioned_namespace): New helpers functions
4237         to work with symbols in the versioned namespace.
4238         (Printer.add_version): Add second name using versioned namespace.
4239         (add_one_template_type_printer, add_one_type_printer): Add second
4240         type printers using versioned namespace.
4241         (register_type_printers): Add template type printer for basic_string.
4242         (build_libstdcxx_dictionary): Remove dead code.
4243         * python/libstdcxx/v6/xmethods.py: Make all matchers look for
4244         versioned namespace.
4245         * testsuite/libstdc++-prettyprinters/48362.cc: Adjust expected
4246         results.
4247         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
4249 2017-01-09  Jonathan Wakely  <jwakely@redhat.com>
4251         PR libstdc++/79017
4252         * acinclude.m4 (GLIBCXX_CHECK_C99_TR1): Check for llrint and llround
4253         functions separately on darwin and if they're missing define
4254         _GLIBCXX_NO_C99_ROUNDING_FUNCS.
4255         * config.h.in: Regenerate.
4256         * configure: Regenerate.
4257         * include/c_global/cmath [_GLIBCXX_NO_C99_ROUNDING_FUNCS] (llrint)
4258         (llrintf, llrintl, llround, llroundf, llroundl): Do not define.
4260         * testsuite/30_threads/condition_variable/members/3.cc: Use new macro
4261         to detect correct thread_local destructors.
4262         * testsuite/util/testsuite_hooks.h (CORRECT_THREAD_LOCAL_DTORS):
4263         Define.
4265 2017-01-09  Jonathan Wakely  <jwakely@redhat.com>
4266             Aditya Kumar  <hiraditya@msn.com>
4268         PR libstdc++/66414
4269         * include/bits/basic_string.tcc
4270         (basic_string::find(const CharT*, size_type, size_type)): Optimize.
4272 2017-01-06  Jonathan Wakely  <jwakely@redhat.com>
4274         * testsuite/21_strings/basic_string/operations/find/char/6.cc: New.
4275         * testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc: New.
4277         * testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp:
4278         Include <cassert> header.
4280         PR libstdc++/78968
4281         * crossconfig.m4: Check for __cxa_thread_atexit on *-*-freebsd*.
4282         * configure: Regenerate.
4284 2017-01-06  Barrett Adair  <barrettellisadair@gmail.com>
4285             Jonathan Wakely  <jwakely@redhat.com>
4287         * include/std/variant (variant, swap): Replace __and_ usage with fold
4288         expressions.
4290 2017-01-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4292         PR go/78978
4293         * acinclude.m4 (GLIBCXX_CHECK_ASSEMBLER_HWCAP): Remove.
4294         * configure.ac: Call GCC_CHECK_ASSEMBLER_HWCAP instead of
4295         GLIBCXX_CHECK_ASSEMBLER_HWCAP.
4296         * fragment.am (CONFIG_CXXFLAGS): Use HWCAP_CFLAGS instead of
4297         HWCAP_FLAGS.
4298         * aclocal.m4: Regenerate.
4299         * configure: Regenerate.
4300         * Makefile.in, doc/Makefile.in, include/Makefile.in,
4301         libsupc++/Makefile.in, po/Makefile.in, python/Makefile.in,
4302         src/Makefile.in, src/c++11/Makefile.in, src/c++98/Makefile.in,
4303         src/filesystem/Makefile.in, testsuite/Makefile.in: Regenerate.
4305 2017-01-06  Jonathan Wakely  <jwakely@redhat.com>
4307         * include/bits/c++config (_GLIBCXX_ASSERTIONS): Avoid redefinition.
4309         PR libstdc++/78991
4310         * include/bits/predefined_ops.h (_Iter_comp_iter, _Iter_comp_val)
4311         (_Val_comp_iter, _Iter_equals_val, _Iter_pred, _Iter_comp_to_val)
4312         (_Iter_comp_to_iter, _Iter_negate): Make constructors explicit and
4313         move function objects.
4314         (__iter_comp_iter, __iter_comp_val, __val_comp_iter, __pred_iter)
4315         (__iter_comp_val, __iter_comp_iter, __negate): Move function objects.
4316         * testsuite/25_algorithms/sort/78991.cc: New test.
4318 2017-01-05  Jonathan Wakely  <jwakely@redhat.com>
4320         * include/bits/std_function.h (function::_Signature_type): Remove.
4321         (function::function(_Functor)): Adjust.
4323 2017-01-05  Tim Shen  <timshen@google.com>
4325         PR libstdc++/78996
4326         * include/std/variant (__gen_vtable_impl): rename __unused to
4327         __dimensions to avoid naming conflict.
4329 2017-01-04  Jonathan Wakely  <jwakely@redhat.com>
4331         PR libstdc++/78968
4332         * config.h.in: Regenerate.
4333         * configure: Likewise.
4334         * configure.ac: Check for __cxa_thread_atexit.
4335         * libsupc++/atexit_thread.cc [_GLIBCXX_HAVE___CXA_THREAD_ATEXIT]:
4336         Don't define __cxa_thread_atexit if libc provides it.
4338 2017-01-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
4340         Implement 2801, Default-constructibility of unique_ptr.
4341         * include/bits/unique_ptr.h (__uniq_ptr_impl::_DeleterConstraint): New.
4342         (unique_ptr::_DeleterConstraint): Likewise.
4343         (unique_ptr()): Constrain.
4344         (unique_ptr(pointer)): Likewise.
4345         (unique_ptr(nullptr_t)): Likewise.
4346         (unique_ptr<_Tp[], _Dp>::_DeleterConstraint): New.
4347         (unique_ptr<_Tp[], _Dp>::unique_ptr()): Constrain.
4348         (unique_ptr<_Tp[], _Dp>::unique_ptr(_Up)): Likewise.
4349         (unique_ptr<_Tp[], _Dp>::unique_ptr(nullptr_t)): Likewise.
4350         * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Adjust.
4351         * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
4352         * testsuite/20_util/unique_ptr/cons/default.cc: New.
4353         * testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Adjust.
4355 2017-01-04  Pauli Nieminen  <suokkos@gmail.com>
4356             Jonathan Wakely  <jwakely@redhat.com>
4358         PR libstdc++/64735
4359         * acinclude.m4 (GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER): Define.
4360         * config.h.in: Regenerate.
4361         * config/abi/pre/gnu.ver [HAVE_EXCEPTION_PTR_SINCE_GCC46]
4362         (GLIBCXX_3.4.15, GLIBCXX_3.4.21, CXXABI_1.3.3, CXXABI_1.3.5): Make
4363         exports for exception_ptr, nested_exception, and future conditional.
4364         [HAVE_EXCEPTION_PTR_SINCE_GCC46] (GLIBCXX_3.4.23, CXXABI_1.3.11): Add
4365         exports for exception_ptr, nested_exception, and future conditional.
4366         * configure: Regenerate.
4367         * configure.ac: Use GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER.
4368         * include/std/future: Remove check for ATOMIC_INT_LOCK_FREE
4369         * libsupc++/eh_atomics.h: New file for internal use only.
4370         (__eh_atomic_inc, __eh_atomic_dec): New.
4371         * libsupc++/eh_ptr.cc (exception_ptr::_M_addref)
4372         (exception_ptr::_M_release) (__gxx_dependent_exception_cleanup)
4373         (rethrow_exception): Use eh_atomics.h reference counting helpers.
4374         * libsupc++/eh_throw.cc (__gxx_exception_cleanup): Likewise.
4375         * libsupc++/eh_tm.cc (free_any_cxa_exception): Likewise.
4376         * libsupc++/exception: Remove check for ATOMIC_INT_LOCK_FREE.
4377         * libsupc++/exception_ptr.h: Likewise.
4378         * libsupc++/guard.cc: Include header for ATOMIC_INT_LOCK_FREE macro.
4379         * libsupc++/nested_exception.cc: Remove check for
4380         ATOMIC_INT_LOCK_FREE.
4381         * libsupc++/nested_exception.h: Likewise.
4382         * src/c++11/future.cc: Likewise.
4383         * testsuite/18_support/exception_ptr/*: Remove atomic builtins checks.
4384         * testsuite/18_support/nested_exception/*: Likewise.
4385         * testsuite/30_threads/async/*: Likewise.
4386         * testsuite/30_threads/future/*: Likewise.
4387         * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
4388         * testsuite/30_threads/packaged_task/*: Likewise.
4389         * testsuite/30_threads/promise/*: Likewise.
4390         * testsuite/30_threads/shared_future/*: Likewise.
4392 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
4394         * doc/xml/manual/documentation_hacking.xml: sourceforge.net now
4395         defaults to https; adjust reference.
4397 2017-01-03  Jonathan Wakely  <jwakely@redhat.com>
4399         PR libstdc++/78956
4400         * include/std/thread (thread(const thread&&)): Add deleted
4401         constructor.
4402         * testsuite/30_threads/thread/cons/lwg2097.cc: New test.
4404         * doc/xml/manual/spine.xml: Update copyright years.
4405         * doc/xml/manual/build_hacking.xml: Fix spelling of libbuilddir.
4406         * doc/xml/manual/test.xml: Likewise.
4407         * doc/html/*: Regenerate.
4409 2017-01-01  Gerald Pfeifer  <gerald@pfeifer.com>
4411         * doc/xml/faq.xml: Update address of C++ ABI link.
4412         * doc/xml/manual/abi.xml: Ditto.
4414 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
4416         Update copyright years.
4418 Copyright (C) 2017 Free Software Foundation, Inc.
4420 Copying and distribution of this file, with or without modification,
4421 are permitted in any medium without royalty provided the copyright
4422 notice and this notice are preserved.