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