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