Revert "libstdc++: Optimize operator+(string/char*, char*/string) equally"

This reverts commit 0b7c9254998b3fb2c39f6b86b5b196f415530205.
This commit is contained in:
Jonathan Wakely 2022-08-24 23:47:43 +01:00
parent f46f58e61d
commit e5428086c2
2 changed files with 7 additions and 23 deletions

View File

@ -3521,9 +3521,14 @@ _GLIBCXX_END_NAMESPACE_CXX11
*/
template<typename _CharT, typename _Traits, typename _Alloc>
_GLIBCXX20_CONSTEXPR
basic_string<_CharT, _Traits, _Alloc>
inline basic_string<_CharT, _Traits, _Alloc>
operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
const _CharT* __rhs);
const _CharT* __rhs)
{
basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
__str.append(__rhs);
return __str;
}
/**
* @brief Concatenate string and character.

View File

@ -640,27 +640,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return __str;
}
template<typename _CharT, typename _Traits, typename _Alloc>
_GLIBCXX20_CONSTEXPR
basic_string<_CharT, _Traits, _Alloc>
operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
const _CharT* __rhs)
{
__glibcxx_requires_string(__rhs);
typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
typedef typename __string_type::size_type __size_type;
typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
rebind<_CharT>::other _Char_alloc_type;
typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits;
const __size_type __len = _Traits::length(__rhs);
__string_type __str(_Alloc_traits::_S_select_on_copy(
__lhs.get_allocator()));
__str.reserve(__len + __lhs.size());
__str.append(__lhs);
__str.append(__rhs, __len);
return __str;
}
template<typename _CharT, typename _Traits, typename _Alloc>
_GLIBCXX_STRING_CONSTEXPR
typename basic_string<_CharT, _Traits, _Alloc>::size_type