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