@@ -749,40 +749,32 @@ struct __can_be_converted_to_string_view
749
749
struct __uninitialized_size_tag {};
750
750
struct __init_with_sentinel_tag {};
751
751
752
- #ifdef _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
752
+
753
+ template <size_t _PaddingSize>
754
+ struct __padding {
755
+ char __padding_[_PaddingSize];
756
+ };
757
+
758
+ template <>
759
+ struct __padding <0 > {};
760
+
753
761
template <class _CharT , size_t __min_cap, size_t _Padding = sizeof (_CharT) - 1 >
754
762
struct __short_layout_alternate {
755
763
_CharT __data_[__min_cap];
756
- unsigned char __padding_[ _Padding] ;
764
+ _LIBCPP_NO_UNIQUE_ADDRESS __padding __padding_< _Padding> ;
757
765
unsigned char __size_ : 7 ;
758
766
unsigned char __is_long_ : 1 ;
759
767
};
760
768
761
- template <class _CharT , size_t __min_cap>
762
- struct __short_layout_alternate <_CharT, __min_cap, 0 > {
763
- _CharT __data_[__min_cap];
764
- unsigned char __size_ : 7 ;
765
- unsigned char __is_long_ : 1 ;
766
- };
767
- #else
768
769
template <class _CharT , size_t __min_cap, size_t _Padding = sizeof (_CharT) - 1 >
769
770
struct __short_layout_classic {
770
771
struct _LIBCPP_PACKED {
771
772
unsigned char __is_long_ : 1 ;
772
773
unsigned char __size_ : 7 ;
773
774
};
774
- char __padding_[ _Padding] ;
775
+ _LIBCPP_NO_UNIQUE_ADDRESS __padding __padding_< _Padding> ;
775
776
_CharT __data_[__min_cap];
776
777
};
777
- template <class _CharT , size_t __min_cap>
778
- struct __short_layout_classic <_CharT, __min_cap, 0 > {
779
- struct _LIBCPP_PACKED {
780
- unsigned char __is_long_ : 1 ;
781
- unsigned char __size_ : 7 ;
782
- };
783
- _CharT __data_[__min_cap];
784
- };
785
- #endif
786
778
787
779
template <class _CharT , class _Traits , class _Allocator >
788
780
class basic_string {
0 commit comments