summaryrefslogtreecommitdiff
path: root/libstdc++-v3/include
AgeCommit message (Collapse)Author
2018-01-05PR libstdc++/83600 fix end iterator for unready std::match_resultsredi
Backport from mainline 2017-12-27 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/83600 * include/bits/regex.h (match_results::end()): Return valid iterator when not ready. * testsuite/28_regex/match_results/ctors/char/default.cc: Check that unready objects are empty and have equal begin and end iterators. * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256292 138bc75d-0d04-0410-961f-82ee72b054a4
2018-01-05PR libstdc++/83598 don't modify flags passed to std::basic_regex constructorsredi
Backport from mainline 2017-12-27 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/83598 * include/bits/regex.h (basic_regex): Don't modify flags passed to constructors. * testsuite/28_regex/basic_regex/ctors/83598.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256291 138bc75d-0d04-0410-961f-82ee72b054a4
2018-01-05Avoid redundant calls to filesystem::status_knownredi
Backport from mainline 2018-01-04 Jonathan Wakely <jwakely@redhat.com> * include/experimental/fs_ops.h (exists(const path&, error_code&))): Only check status_known once. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256288 138bc75d-0d04-0410-961f-82ee72b054a4
2018-01-04Protect optional's deduction guide with the feature macroville
Backport from mainline 2018-01-03 Ville Voutilainen <ville.voutilainen@gmail.com> Protect optional's deduction guide with the feature macro * include/std/optional: Use the feature macro. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256261 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-282017-12-28 François Dumont <fdumont@gcc.gnu.org>fdumont
Backport from mainline 2017-12-20 François Dumont <fdumont@gcc.gnu.org> PR libstdc++/82522 * include/debug/map.h (map::insert(value_type&&)) (map::insert(const_iterator, value_type&&)): Add overload for rvalues. * include/debug/multimap.h (multimap::insert(value_type&&)) (multimap::insert(const_iterator, value_type&&)): Likewise. * include/debug/unordered_map (unordered_map::insert(value_type&&)) (unordered_map::insert(const_iterator, value_type&&)) (unordered_multimap::insert(value_type&&)) (unordered_multimap::insert(const_iterator, value_type&&)): Likewise. * testsuite/23_containers/map/modifiers/insert/dr2354.cc (test02): New. * testsuite/23_containers/multimap/modifiers/insert/dr2354.cc (test02): New. * testsuite/23_containers/unordered_map/insert/dr2354.cc (test02): New. * testsuite/23_containers/unordered_multimap/insert/dr2354.cc (test02): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256018 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-14PR libstdc++/83427 detect weak result type from noexcept functionsredi
PR libstdc++/83427 * include/bits/refwrap.h (_Weak_result_type_impl) (_Reference_wrapper_base): Deduce noexcept for function types. * testsuite/20_util/bind/83427.cc: New test. * testsuite/20_util/reference_wrapper/83427.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255652 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-14PR libstdc++/59568 don't use putback or update value when extraction failsredi
PR libstdc++/59568 * include/std/complex (operator>>): Only use putback if a character was successfully extracted and only set the value if a number was successfully extracted. * testsuite/26_numerics/complex/inserters_extractors/char/59568.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255633 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-12PR libstdc++/83395 fix invocable traits for INVOKE<cv void>redi
PR libstdc++/83395 * include/std/type_traits (__is_invocable_impl): Remove partial specialization for INVOKE<void> and restore is_void<R> check in primary template. (__is_nt_invocable_impl): Likewise. * testsuite/20_util/is_invocable/83395.cc: New test. * testsuite/20_util/is_nothrow_invocable/83395.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255585 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-01PR libstdc++/82522 overload map insert functions for rvalues (LWG 2354)redi
Backport from mainline 2017-10-13 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/82522 * doc/xml/manual/intro.xml: Document LWG 2354 changes. * include/bits/stl_map.h (map::insert(value_type&&)) (map::insert(const_iterator, value_type&&)): Add overload for rvalues. * include/bits/stl_multimap.h (multimap::insert(value_type&&)) (multimap::insert(const_iterator, value_type&&)): Likewise. * include/bits/unordered_map.h (unordered_map::insert(value_type&&)) (unordered_map::insert(const_iterator, value_type&&)) (unordered_multimap::insert(value_type&&)) (unordered_multimap::insert(const_iterator, value_type&&)): Likewise. * testsuite/23_containers/map/modifiers/insert/dr2354.cc: New test. * testsuite/23_containers/multimap/modifiers/insert/dr2354.cc: New test. * testsuite/23_containers/unordered_map/insert/dr2354.cc: New test. * testsuite/23_containers/unordered_multimap/insert/dr2354.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255330 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-01PR libstdc++/83134 Ensure std::__not_ converts B::value to boolredi
Backport from mainline 2017-11-23 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/83134 * include/std/type_traits (__not_): Explicitly convert to bool. * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error. * testsuite/20_util/logical_traits/83134.cc: New test. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust dg-error. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255329 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-01Add noexcept to std::integral_constant membersredi
Backport from mainline 2017-12-01 Jonathan Wakely <jwakely@redhat.com> * include/std/type_traits (integral_constant): Make member functions noexcept (LWG 2346). * include/std/utility (integer_sequence): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255328 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-01Add noexcept to std::shared_future copy operations (LWG DR 2799)redi
Backport from mainline 2017-11-16 Jonathan Wakely <jwakely@redhat.com> * include/std/future (shared_future): Add noexcept to copy constructor and copy-assignment operator (LWG 2799). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255327 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-01Add noexcept to generic std::size, std::empty and std::dataredi
Backport from mainline 2017-11-15 Jonathan Wakely <jwakely@redhat.com> * include/bits/range_access.h (size, empty, data): Add conditional noexcept to generic overloads. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255326 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-01PR libstdc++/82685 add 'noexcept' to string_view literalsredi
Backport from mainline 2017-10-24 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/82685 * include/experimental/string_view (operator""sv): Add noexcept. * include/std/string_view (operator""sv): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255325 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-01PR libstdc++/83226 avoid forming pointer-to-reference typeredi
Backport from mainline 2017-11-30 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/83226 * include/bits/node_handle.h (_Node_handle::__pointer): Avoid forming pointer-to-reference types. * testsuite/23_containers/map/modifiers/insert/83226.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255324 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-01Fix typo in std::wbuffer_convertredi
Backport from mainline 2017-11-14 Jonathan Wakely <jwakely@redhat.com> * include/bits/locale_conv.h (wbuffer_convert::_M_conv_get): Fix typo. * testsuite/22_locale/conversions/buffer/3.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255323 138bc75d-0d04-0410-961f-82ee72b054a4
2017-12-01Remove _Node_insert_return::get() member functions (P0508R0)redi
Backport from mainline 2017-11-03 Jonathan Wakely <jwakely@redhat.com> * include/bits/node_handle.h (_Node_insert_return::get): Remove, as per P0508R0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@255322 138bc75d-0d04-0410-961f-82ee72b054a4
2017-10-23PR libstdc++/81395 fix crash when write follows large readredi
Backport from mainline 2017-07-18 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/81395 * include/bits/fstream.tcc (basic_filebuf::xsgetn): Don't set buffer pointers for write mode after reading. * testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@254015 138bc75d-0d04-0410-961f-82ee72b054a4
2017-10-20Update value of __cpp_lib_chrono feature-test macroredi
* include/std/chrono (__cpp_lib_chrono): Update macro value to indicate support for P0505R0. * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Check for updated macro. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@253960 138bc75d-0d04-0410-961f-82ee72b054a4
2017-10-20Define __cpp_lib_byte feature-test macroredi
* include/c_global/cstddef: Define __cpp_lib_byte feature-test macro. * testsuite/18_support/byte/requirements.cc: Check macro. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@253953 138bc75d-0d04-0410-961f-82ee72b054a4
2017-10-20PR libstdc++/82481 Suppress clang-tidy warningsredi
Backport from mainline 2017-10-13 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/82481 * include/std/mutex (call_once): Suppress clang-tidy warnings about dangling references. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@253944 138bc75d-0d04-0410-961f-82ee72b054a4
2017-10-20PR libstdc++/79433 no #error for including headers with wrong -stdredi
Backport from mainline 2017-09-12 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/79433 * doc/xml/manual/status_cxx2017.xml: Update feature-test macros. * doc/html/*: Regenerate. * include/Makefile.am: Remove <bits/c++17_warning.h>. * include/Makefile.in: Regenerate. * include/bits/c++17_warning.h: Remove. * include/bits/string_view.tcc: Do not include <bits/c++17_warning.h> for pre-C++17 modes. * include/std/any: Likewise. (__cpp_lib_any): Define. * include/std/mutex (__cpp_lib_scoped_lock): Adjust value as per new SD-6 draft. * include/std/numeric (__cpp_lib_gcd_lcm): Define as per new SD-6 draft. * include/std/optional: Do not include <bits/c++17_warning.h>. (__cpp_lib_optional): Define. * include/std/shared_mutex: Do not include <bits/c++14_warning.h>. * include/std/string_view: Do not include <bits/c++17_warning.h>. (__cpp_lib_string_view): Define. * include/std/variant: Do not include <bits/c++17_warning.h>. (__cpp_lib_variant): Define. * testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error line numbers. * testsuite/26_numerics/gcd/1.cc: Test for __cpp_lib_gcd_lcm. * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line numbers. * testsuite/26_numerics/lcm/1.cc: Test for __cpp_lib_gcd_lcm. * testsuite/26_numerics/lcm/lcm_neg.cc: Adjust dg-error line numbers. * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Adjust expected value of __cpp_lib_scoped_lock. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@253943 138bc75d-0d04-0410-961f-82ee72b054a4
2017-10-20Fix path::iterator post-increment and post-decrementredi
Backport from mainline 2017-10-19 Jonathan Wakely <jwakely@redhat.com> * include/experimental/bits/fs_path.h (path::iterator++(int)) (path::iterator--(int)): Fix for paths with only one component. * testsuite/experimental/filesystem/path/itr/traversal.cc: Test post-increment and post-decrement. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@253942 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-20PR libstdc++/79162 Fix std::string regression due to LWG 2946 (old ABI)redi
PR libstdc++/79162 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI] (basic_string::_If_sv): Remove from the overload set when the argument is derived from basic_string. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@253038 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-20PR libstdc++/79162 Fix std::string regression due to LWG 2946redi
PR libstdc++/79162 * include/bits/basic_string.h (basic_string::_If_sv): Remove from the overload set when the argument is derived from basic_string. * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc: New test. * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@253025 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-20PR libstdc++/82262 fix std::hash<std::optional<const T>>redi
PR libstdc++/82262 * include/std/optional (__optional_hash_call_base): Add template parameter for remove_const_t<_Tp> and use it consistently. * testsuite/20_util/optional/hash.cc: Test optional<const T>. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@253015 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-20PR libstdc++/82254 fix std::is_nothrow_invocable_r w.r.t throwing conversionsredi
PR libstdc++/82254 * include/std/type_traits (__is_invocable): Add partial specialization for INVOKE<void> case and remove is_void<R> check from partial specialization for INVOKE<R> case. (__is_nt_invocable_impl): New helper for is_nothrow_invocable_r. (is_nothrow_invocable_r): Use __is_nt_invocable_impl. * testsuite/20_util/is_nothrow_invocable/value.cc: Add tests for conversions that can throw or fail to convert. Use static assert strings to explain negative results. * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Use is_nothrow_constructible in is_nt_invocable_conv. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@253014 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-13PR libstdc++/79162 implement LWG 2946 and LWG 2758redi
Backport from mainline 2017-09-04 Daniel Kruegler <daniel.kruegler@gmail.com> PR libstdc++/79162 Implement LWG 2946, LWG 2758's resolution missed further corrections * include/bits/basic_string.h (basic_string::compare): Add missing required noexcept specifications. (basic_string): Introduce internal _S_to_string_view and __sv_wrapper for implicit string_view conversion. (basic_string::basic_string): Fix explicit string_view conversion by implicit conversion using _S_to_string_view and __sv_wrapper. (basic_string): Introduce internal basic_string(__sv_wrapper, Alloc) constructor. (basic_string): Fix operator=(T) template by operator=(const T&) template for uncopyable types (PR 79162). (basic_string::operator+=, basic_string::append, basic_string::assign) (basic_string::insert, basic_string::replace, basic_string::find) (basic_string::rfind, basic_string::find_first_of) (basic_string::find_last_of, basic_string::find_first_not_of) (basic_string::find_last_not_of, basic_string::compare): Replace __sv_type argument by template const T& (LWG 2946) and correct documentation describing __sv_type argument. (basic_string::find, basic_string::rfind, basic_string::find_first_of) (basic_string::find_last_of, basic_string::find_first_not_of) (basic_string::find_last_not_of, basic_string::compare): Replace unconditional noexcept specification by conditional noexcept specification to partially balance the removal of noexcept by LWG 2946. * testsuite/21_strings/basic_string/79162.cc: New. * testsuite/21_strings/basic_string/lwg2946.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@252337 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-13PR libstdc++/81468 constrain std::chrono::time_point constructorredi
PR libstdc++/81468 * include/std/chrono (time_point(const time_point<_Dur2>&)): Add missing constraint from LWG DR 1177. * testsuite/20_util/duration/cons/dr1177.cc: New. * testsuite/20_util/time_point/cons/81468.cc: New. * testsuite/20_util/duration/literals/range.cc: Update dg-error line. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@252090 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-12PR libstdc++/70483 make std::experimental::string_view fully constexprredi
Backport from mainline 2017-09-12 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/70483 * include/experimental/bits/string_view.tcc (basic_string_view::find) (basic_string_view::rfind, basic_string_view::find_first_of) (basic_string_view::find_last_of, basic_string_view::find_first_not_of) (basic_string_view::find_last_not_of): Add constexpr specifier. * include/experimental/string_view (basic_string_view::remove_prefix) (basic_string_view::remove_suffix, basic_string_view::swap) (basic_string_view::compare, basic_string_view::find) (basic_string_view::rfind, basic_string_view::find_first_of) (basic_string_view::find_last_of, basic_string_view::find_first_not_of) (basic_string_view::find_last_not_of, operator==, operator!=) (operator<, operator>, operator<=, operator>=): Likewise. * testsuite/experimental/string_view/operations/compare/char/70483.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@252032 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-12PR libstdc++/70483 make std::string_view fully constexprredi
Backport from mainline 2017-09-11 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/70483 * include/bits/string_view.tcc (basic_string_view::find) (basic_string_view::rfind, basic_string_view::find_first_of) (basic_string_view::find_last_of, basic_string_view::find_first_not_of) (basic_string_view::find_last_not_of): Add constexpr specifier. * include/std/string_view (basic_string_view::operator=) (basic_string_view::rbegin, basic_string_view::rend) (basic_string_view::crbegin, basic_string_view::crend) (basic_string_view::remove_prefix, basic_string_view::remove_suffix) (basic_string_view::swap, basic_string_view::compare) (basic_string_view::find, basic_string_view::rfind) (basic_string_view::find_first_of, basic_string_view::find_last_of) (basic_string_view::find_first_not_of) (basic_string_view::find_last_not_of, basic_string_view::_M_check) (basic_string_view::_M_limit, operator==, operator!=, operator<) (operator>, operator<=, operator>=): Likewise. * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/ char/1.cc: Repeat tests in constexpr context. * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/ wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/ char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/ wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/3.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc: Likewise. * testsuite/21_strings/basic_string_view/operators/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/range_access/char/1.cc: Test cbegin, cend, rbegin, rend, crbegin and crend. * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc: Remove trailing whitespace. * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/ 1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc: New. * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc: New. * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc: New. * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/ 2.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@252031 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-12Finish implementing P0426R1 "Constexpr for std::char_traits" for C++17redi
As discussed in PR c++/80265 ("__builtin_{memcmp,memchr,strlen} are not usable in constexpr functions"), use __builtin_constant_p to tell whether we can defer to a constexpr algorithm. I used __always_inline__ just to be thorough. It isn't really really necessary as far as I could determine. Changes like these: if (__n == 0) return 0; - return wmemcmp(__s1, __s2, __n); + else + return wmemcmp(__s1, __s2, __n); are necessary otherwise G++ complains that we're calling a non-constexpr function, which looks like a a manifestation of PR67026 to me. libstdc++-v3: 2017-06-12 Pedro Alves <palves@redhat.com> * doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr char_traits status. * doc/html/*: Regenerate. * include/bits/char_traits.h (_GLIBCXX_ALWAYS_INLINE): Define if not already defined. (__cpp_lib_constexpr_char_traits): Uncomment. (__constant_string_p, __constant_char_array_p): New. (std::char_traits<char>, std::char_traits<wchar_t>): Add _GLIBCXX17_CONSTEXPR on compare, length and find and use __constant_string_p, __constant_char_array_p and __builtin_constant_p to defer to __gnu_cxx::char_traits at compile time. * testsuite/21_strings/char_traits/requirements/ constexpr_functions_c++17.cc: Uncomment __cpp_lib_constexpr_char_traits tests. Uncomment test_compare<char>, test_length<char>, test_find<char>, test_compare<wchar_t>, test_length<wchar_t> and test_find<wchar_t> static_assert tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@252030 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-04PR c++/82039 suppress -Wzero-as-null-pointer-constant warningredi
Backport from mainline 2017-08-31 Jonathan Wakely <jwakely@redhat.com> PR c++/82039 * include/ext/new_allocator.h (__gnu_cxx::new_allocator::allocate): Adjust null pointer constant to avoid warning. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@251658 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-04PR libstdc++/81912 make std::__iterator_category constexprredi
Backport from mainline 2017-08-21 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/81912 * include/bits/stl_iterator_base_types.h (__iterator_category): Add constexpr for C++11 and later. * testsuite/24_iterators/container_access.cc: Add target selector. * testsuite/24_iterators/range_access.cc: Fix clause number in comment. * testsuite/24_iterators/range_access_cpp14.cc: Likewise. * testsuite/24_iterators/range_access_cpp17.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@251657 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-04Fix test for __has_unique_object_representations support in Clangredi
Backport from mainline 2017-08-09 Jonathan Wakely <jwakely@redhat.com> * include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP): Replace with _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP and use __is_identifier to set it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@251656 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-04Fix test for __is_aggregate support in Clangredi
Backport from mainline 2017-08-09 Katsuhiko Nishimra <ktns.87@gmail.com> * include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Use __is_identifier instead of __has_builtin. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@251655 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-04PR libstdc++/81891 fix double-free in hashtable constructorredi
Backport from mainline 2017-08-18 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/81891 * include/bits/hashtable.h (_Hashtable(_InputIterator, _InputIterator, size_type, const _H1&, const _H2&, const _Hash&, const _Equal&, const _ExtractKey&, const allocator_type&)): Let destructor do clean up if an exception is thrown. * testsuite/23_containers/unordered_map/cons/81891.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@251654 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-04PR libstdc++/81599 fix typo in Doxygen commentsredi
Backport from mainline 2017-07-31 Marek Polacek <polacek@redhat.com> PR libstdc++/81599 * include/bits/stl_stack.h: Fix typo. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@251653 138bc75d-0d04-0410-961f-82ee72b054a4
2017-09-04PR libstdc++/81338 correctly manage string capacityredi
Backport from mainline 2017-07-10 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/81338 * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string): Declare basic_stringbuf to be a friend. * include/bits/sstream.tcc (basic_stringbuf::overflow) [_GLIBCXX_USE_CXX11_ABI]: Use unused capacity before reallocating. * include/std/sstream (basic_stringbuf::__xfer_bufptrs): Update string length to buffer length. * testsuite/27_io/basic_stringstream/assign/81338.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@251652 138bc75d-0d04-0410-961f-82ee72b054a4
2017-08-14PR libstdc++/53984 handle exceptions in basic_istream::sentryredi
Backport from mainline 2017-07-25 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/53984 * include/bits/basic_ios.h (basic_ios::_M_setstate): Adjust comment. * include/bits/istream.tcc (basic_istream::sentry): Handle exceptions during construction. * include/std/istream: Adjust comments for formatted input functions and unformatted input functions. * testsuite/27_io/basic_fstream/53984.cc: New. * testsuite/27_io/basic_istream/sentry/char/53984.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@251089 138bc75d-0d04-0410-961f-82ee72b054a4
2017-07-25Support move-only deleters in std::shared_ptr (LWG 2802)redi
Backport from mainline 2017-06-09 Jonathan Wakely <jwakely@redhat.com> * doc/xml/manual/intro.xml: Document LWG 2802, 2873 and 2942 changes. * include/bits/shared_ptr.h (shared_ptr): Use rvalues for deleters (LWG 2802). * include/bits/shared_ptr_base.h (_Sp_ebo_helper, _Sp_counted_deleter (_Sp_counted_deleter::_Impl, __shared_count, __shared_ptr): Likewise. * testsuite/20_util/shared_ptr/cons/lwg2802.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250541 138bc75d-0d04-0410-961f-82ee72b054a4
2017-07-25Add noexcept to shared_ptr owner comparisons (LWG 2873)redi
Backport from mainline 2017-06-05 Jonathan Wakely <jwakely@redhat.com> * include/bits/shared_ptr_base.h (__shared_ptr::owner_before) (__weak_ptr::owner_before, _Sp_owner_less::operator()): Add noexcept specifiers as per LWG 2873 and LWG 2942. * testsuite/20_util/owner_less/noexcept.cc: New. * testsuite/20_util/shared_ptr/observers/owner_before.cc: Test noexcept guarantees. * testsuite/20_util/weak_ptr/observers/owner_before.cc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250540 138bc75d-0d04-0410-961f-82ee72b054a4
2017-07-25PR libstdc++/80553 don't allow destroying non-destructible typesredi
Backport from mainline 2017-04-28 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/80553 * include/bits/stl_construct.h (_Destroy, _Destroy_n): Add static assertions to ensure type is destructible. (destroy_at, destroy, destroy_n): Move from stl_uninitialized.h. * include/bits/stl_uninitialized.h (destroy_at, destroy, destroy_n): Move to stl_construct.h. * testsuite/20_util/specialized_algorithms/memory_management_tools/ destroy_neg.cc: New test. * testsuite/23_containers/vector/cons/destructible_neg.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250539 138bc75d-0d04-0410-961f-82ee72b054a4
2017-07-25Implement std::experimental::source_location (N4519)redi
Backport from mainline 2017-05-16 Jonathan Wakely <jwakely@redhat.com> * configure: Regenerate. * doc/xml/manual/status_cxx2017.xml: Update status table. * doc/html/*: Regenerate. * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/experimental/source_location: New header implementing N4519. * testsuite/experimental/source_location/1.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250538 138bc75d-0d04-0410-961f-82ee72b054a4
2017-07-25Prevent __uses_alloc from holding dangling referencesredi
Backport from mainline 2017-07-06 Jonathan Wakely <jwakely@redhat.com> * include/bits/uses_allocator.h (__use_alloc(const _Alloc&&)): Add deleted overload to prevent dangling references to rvalues. * include/experimental/memory_resource (polymorphic_allocator::construct): Do not call __use_alloc with rvalue arguments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250537 138bc75d-0d04-0410-961f-82ee72b054a4
2017-07-25PR libstdc++/81017 add noexcept to std::function move operationsredi
Backport from mainline 2017-06-08 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/81017 * include/bits/std_function.h (function::function(function&&)) (function::operator=(funtion&&)): Add noexcept. * testsuite/20_util/function/assign/move.cc: Check for noexcept. * testsuite/20_util/function/cons/move.cc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250536 138bc75d-0d04-0410-961f-82ee72b054a4
2017-07-25Reorder std::scoped_lock parameters as per P0739R0 DR statusredi
Backport from mainline 2017-07-15 Jonathan Wakely <jwakely@redhat.com> * include/std/mutex (scoped_lock): Reorder std::adopt_lock_t parameter as per P0739R0. * testsuite/30_threads/scoped_lock/cons/1.cc: Reorder arguments. * testsuite/30_threads/scoped_lock/cons/deduction.cc: Test deduction with std::adopt_lock_t. * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Check feature-test macro. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250535 138bc75d-0d04-0410-961f-82ee72b054a4
2017-07-25Constrain std::variant constructor for class template argument deductionredi
Backport from mainline 2017-07-14 Jason Merrill <jason@redhat.com> Jonathan Wakely <jwakely@redhat.com> * include/std/variant (variant::variant(_Tp&&)): Constrain to remove the constructor for empty variants from the candidate functions during class template argument deduction. * testsuite/20_util/variant/deduction.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250534 138bc75d-0d04-0410-961f-82ee72b054a4
2017-07-25PR libstdc++/80939 Remove unmeetable constexpr specifiersredi
Backport from mainline 2017-06-02 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/80939 * include/std/variant (__erased_ctor, __erased_assign, __erased_swap) (__erased_hash): Remove constexpr specifier and qualify calls to __ref_cast. (__erased_dtor): Remove constexpr specifier and use _Destroy. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250533 138bc75d-0d04-0410-961f-82ee72b054a4
2017-07-25PR libstdc++/80737 backport std::variant fix from mainlineredi
Backport from mainline 2017-05-20 Tim Shen <timshen@google.com> PR libstdc++/80737 * include/std/variant(variant::variant): SFINAE on is_same first. * testsuite/20_util/variant/any.cc: test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250532 138bc75d-0d04-0410-961f-82ee72b054a4