@@ -749,40 +749,32 @@ struct __can_be_converted_to_string_view
749749struct __uninitialized_size_tag {};
750750struct __init_with_sentinel_tag {};
751751
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+
753761template <class _CharT , size_t __min_cap, size_t _Padding = sizeof (_CharT) - 1 >
754762struct __short_layout_alternate {
755763 _CharT __data_[__min_cap];
756- unsigned char __padding_[ _Padding] ;
764+ _LIBCPP_NO_UNIQUE_ADDRESS __padding __padding_< _Padding> ;
757765 unsigned char __size_ : 7 ;
758766 unsigned char __is_long_ : 1 ;
759767};
760768
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
768769template <class _CharT , size_t __min_cap, size_t _Padding = sizeof (_CharT) - 1 >
769770struct __short_layout_classic {
770771 struct _LIBCPP_PACKED {
771772 unsigned char __is_long_ : 1 ;
772773 unsigned char __size_ : 7 ;
773774 };
774- char __padding_[ _Padding] ;
775+ _LIBCPP_NO_UNIQUE_ADDRESS __padding __padding_< _Padding> ;
775776 _CharT __data_[__min_cap];
776777};
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
786778
787779template <class _CharT , class _Traits , class _Allocator >
788780class basic_string {
0 commit comments