aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2017-09-20 23:03:37 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2017-09-20 23:03:37 +0100
commit9d2bac69bcbf4715b353c91485f0afb52513e88d (patch)
treed1699808ef9ded5e5c234221d7a5d80acb25359e
parent94c23e3960c24a3bfcfe2daf7158fb51e0aa0e22 (diff)
downloadgcc-9d2bac69bcbf4715b353c91485f0afb52513e88d.zip
gcc-9d2bac69bcbf4715b353c91485f0afb52513e88d.tar.gz
gcc-9d2bac69bcbf4715b353c91485f0afb52513e88d.tar.bz2
PR libstdc++/79162 Fix std::string regression due to LWG 2946 (old ABI)
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. From-SVN: r253035
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/basic_string.h1
2 files changed, 6 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ceb883e..9be1db7 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,6 +1,11 @@
2017-09-20 Jonathan Wakely <jwakely@redhat.com>
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.
+
+ 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
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index 8a382d5..a4b81137 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -3439,6 +3439,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
template<typename _Tp, typename _Res>
using _If_sv = enable_if_t<
__and_<is_convertible<const _Tp&, __sv_type>,
+ __not_<is_convertible<const _Tp*, const basic_string*>>,
__not_<is_convertible<const _Tp&, const _CharT*>>>::value,
_Res>;