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