mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 18:40:53 +08:00
Revert "libstdc++: Optimize operator+(string/char*, char*/string) equally"
This reverts commit 0b7c9254998b3fb2c39f6b86b5b196f415530205.
This commit is contained in:
parent
f46f58e61d
commit
e5428086c2
@ -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.
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user