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