@@ -812,7 +812,7 @@ private:
812
812
if (__size > max_size ())
813
813
__throw_length_error ();
814
814
if (__fits_in_sso (__size)) {
815
- __zero ();
815
+ __r_. first () = __rep ();
816
816
__set_short_size (__size);
817
817
} else {
818
818
auto __capacity = __recommend (__size) + 1 ;
@@ -1531,7 +1531,7 @@ private:
1531
1531
}
1532
1532
1533
1533
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void __default_init () {
1534
- __zero ();
1534
+ __r_. first () = __rep ();
1535
1535
if (__libcpp_is_constant_evaluated ()) {
1536
1536
size_type __sz = __recommend (0 ) + 1 ;
1537
1537
pointer __ptr = __alloc_traits::allocate (__alloc (), __sz);
@@ -1638,11 +1638,6 @@ private:
1638
1638
const_pointer __get_pointer () const _NOEXCEPT
1639
1639
{return __is_long () ? __get_long_pointer () : __get_short_pointer ();}
1640
1640
1641
- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20
1642
- void __zero () _NOEXCEPT {
1643
- __r_.first () = __rep ();
1644
- }
1645
-
1646
1641
template <size_type __a> static
1647
1642
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20
1648
1643
size_type __align_it (size_type __s) _NOEXCEPT
@@ -1942,7 +1937,7 @@ void basic_string<_CharT, _Traits, _Allocator>::__init(const value_type* __s,
1942
1937
size_type __reserve)
1943
1938
{
1944
1939
if (__libcpp_is_constant_evaluated ())
1945
- __zero ();
1940
+ __r_. first () = __rep ();
1946
1941
if (__reserve > max_size ())
1947
1942
__throw_length_error ();
1948
1943
pointer __p;
@@ -1970,7 +1965,7 @@ void
1970
1965
basic_string<_CharT, _Traits, _Allocator>::__init(const value_type* __s, size_type __sz)
1971
1966
{
1972
1967
if (__libcpp_is_constant_evaluated ())
1973
- __zero ();
1968
+ __r_. first () = __rep ();
1974
1969
if (__sz > max_size ())
1975
1970
__throw_length_error ();
1976
1971
pointer __p;
@@ -2029,7 +2024,7 @@ basic_string<_CharT, _Traits, _Allocator>::basic_string(const basic_string& __st
2029
2024
: __r_(__default_init_tag(), __alloc_traits::select_on_container_copy_construction(__str.__alloc()))
2030
2025
{
2031
2026
if (!__str.__is_long ())
2032
- __r_.first (). __r = __str.__r_ .first (). __r ;
2027
+ __r_.first () = __str.__r_ .first ();
2033
2028
else
2034
2029
__init_copy_ctor_external (std::__to_address (__str.__get_long_pointer ()),
2035
2030
__str.__get_long_size ());
@@ -2043,7 +2038,7 @@ basic_string<_CharT, _Traits, _Allocator>::basic_string(
2043
2038
: __r_(__default_init_tag(), __a)
2044
2039
{
2045
2040
if (!__str.__is_long ())
2046
- __r_.first (). __r = __str.__r_ .first (). __r ;
2041
+ __r_.first () = __str.__r_ .first ();
2047
2042
else
2048
2043
__init_copy_ctor_external (std::__to_address (__str.__get_long_pointer ()),
2049
2044
__str.__get_long_size ());
@@ -2055,7 +2050,8 @@ _LIBCPP_CONSTEXPR_SINCE_CXX20
2055
2050
void basic_string<_CharT, _Traits, _Allocator>::__init_copy_ctor_external(
2056
2051
const value_type* __s, size_type __sz) {
2057
2052
if (__libcpp_is_constant_evaluated ())
2058
- __zero ();
2053
+ __r_.first () = __rep ();
2054
+
2059
2055
pointer __p;
2060
2056
if (__fits_in_sso (__sz)) {
2061
2057
__p = __get_short_pointer ();
@@ -2100,12 +2096,9 @@ basic_string<_CharT, _Traits, _Allocator>::basic_string(basic_string&& __str, co
2100
2096
__init (std::__to_address (__str.__get_long_pointer ()), __str.__get_long_size ());
2101
2097
else
2102
2098
{
2103
- if (__libcpp_is_constant_evaluated ()) {
2104
- __zero ();
2105
- __r_.first ().__l = __str.__r_ .first ().__l ;
2106
- } else {
2107
- __r_.first ().__r = __str.__r_ .first ().__r ;
2108
- }
2099
+ if (__libcpp_is_constant_evaluated ())
2100
+ __r_.first () = __rep ();
2101
+ __r_.first () = __str.__r_ .first ();
2109
2102
__str.__default_init ();
2110
2103
}
2111
2104
std::__debug_db_insert_c (this );
@@ -2121,7 +2114,8 @@ void
2121
2114
basic_string<_CharT, _Traits, _Allocator>::__init(size_type __n, value_type __c)
2122
2115
{
2123
2116
if (__libcpp_is_constant_evaluated ())
2124
- __zero ();
2117
+ __r_.first () = __rep ();
2118
+
2125
2119
if (__n > max_size ())
2126
2120
__throw_length_error ();
2127
2121
pointer __p;
@@ -2261,7 +2255,7 @@ __enable_if_t
2261
2255
basic_string<_CharT, _Traits, _Allocator>::__init (_ForwardIterator __first, _ForwardIterator __last)
2262
2256
{
2263
2257
if (__libcpp_is_constant_evaluated ())
2264
- __zero ();
2258
+ __r_. first () = __rep ();
2265
2259
size_type __sz = static_cast <size_type>(std::distance (__first, __last));
2266
2260
if (__sz > max_size ())
2267
2261
__throw_length_error ();
@@ -2517,7 +2511,7 @@ basic_string<_CharT, _Traits, _Allocator>::operator=(const basic_string& __str)
2517
2511
__copy_assign_alloc (__str);
2518
2512
if (!__is_long ()) {
2519
2513
if (!__str.__is_long ()) {
2520
- __r_.first (). __r = __str.__r_ .first (). __r ;
2514
+ __r_.first () = __str.__r_ .first ();
2521
2515
} else {
2522
2516
return __assign_no_alias<true >(__str.data (), __str.size ());
2523
2517
}
0 commit comments