@@ -151,45 +151,41 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, _CharT __value)
151151  }
152152}
153153
154- #  if  _LIBCPP_HAS_UNICODE
155154template  <__fmt_char_type _CharT, output_iterator<const  _CharT&> _OutIt>
156-   requires (same_as<_CharT, char >)
157155_LIBCPP_HIDE_FROM_ABI _OutIt __fill (_OutIt __out_it, size_t  __n, __format_spec::__code_point<_CharT> __value) {
158-   std:: size_t  __bytes =  std::countl_one ( static_cast < unsigned   char >(__value. __data [ 0 ])); 
159-   if  (__bytes ==  0 ) 
160-     return   __formatter::__fill ( std::move  (__out_it), __n,  __value.__data [0 ]);
161- 
162-   for  ( size_t  __i =  0 ; __i <  __n; ++__i) 
163-     __out_it =  __formatter::__copy ( 
164-          std::addressof (__value. __data [ 0 ]),  std::addressof (__value. __data [ 0 ]) + __bytes,  std::move (__out_it)); 
165-   return   __out_it; 
166- } 
167- 
156+ #   if  _LIBCPP_HAS_UNICODE 
157+   if  constexpr  (same_as<_CharT,  char >) { 
158+     std:: size_t  __bytes =  std::countl_one  ( static_cast < unsigned   char >( __value.__data [0 ]) );
159+      if  (__bytes ==  0 ) 
160+        return   __formatter::__fill ( std::move (__out_it),  __n, __value. __data [ 0 ]); 
161+ 
162+     for  ( size_t  __i =  0 ; __i < __n; ++__i) 
163+        __out_it =  __formatter::__copy ( 
164+            std::addressof (__value. __data [ 0 ]),  std::addressof (__value. __data [ 0 ]) + __bytes,  std::move (__out_it)); 
165+      return  __out_it; 
168166#    if  _LIBCPP_HAS_WIDE_CHARACTERS
169- template  <__fmt_char_type _CharT, output_iterator<const  _CharT&> _OutIt>
170-   requires (same_as<_CharT, wchar_t > && sizeof (wchar_t ) == 2)
171- _LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t  __n, __format_spec::__code_point<_CharT> __value) {
172-   if  (!__unicode::__is_high_surrogate (__value.__data [0 ]))
173-     return  __formatter::__fill (std::move (__out_it), __n, __value.__data [0 ]);
174- 
175-   for  (size_t  __i = 0 ; __i < __n; ++__i)
176-     __out_it = __formatter::__copy (
177-         std::addressof (__value.__data [0 ]), std::addressof (__value.__data [0 ]) + 2 , std::move (__out_it));
178-   return  __out_it;
179- }
180- 
181- template  <__fmt_char_type _CharT, output_iterator<const  _CharT&> _OutIt>
182-   requires (same_as<_CharT, wchar_t > && sizeof (wchar_t ) == 4)
183- _LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t  __n, __format_spec::__code_point<_CharT> __value) {
184-   return  __formatter::__fill (std::move (__out_it), __n, __value.__data [0 ]);
185- }
167+   } else  if  constexpr  (same_as<_CharT, wchar_t >) {
168+     if  constexpr  (sizeof (wchar_t ) == 2 ) {
169+       if  (!__unicode::__is_high_surrogate (__value.__data [0 ]))
170+         return  __formatter::__fill (std::move (__out_it), __n, __value.__data [0 ]);
171+ 
172+       for  (size_t  __i = 0 ; __i < __n; ++__i)
173+         __out_it = __formatter::__copy (
174+             std::addressof (__value.__data [0 ]), std::addressof (__value.__data [0 ]) + 2 , std::move (__out_it));
175+       return  __out_it;
176+     } else  if  constexpr  (sizeof (wchar_t ) == 4 ) {
177+       return  __formatter::__fill (std::move (__out_it), __n, __value.__data [0 ]);
178+     } else  {
179+       static_assert (false , " expected sizeof(wchar_t) to be 2 or 4"  );
180+     }
186181#    endif //  _LIBCPP_HAS_WIDE_CHARACTERS
187- #  else     //  _LIBCPP_HAS_UNICODE
188- template  <__fmt_char_type _CharT, output_iterator<const  _CharT&> _OutIt>
189- _LIBCPP_HIDE_FROM_ABI _OutIt __fill (_OutIt __out_it, size_t  __n, __format_spec::__code_point<_CharT> __value) {
182+   } else  {
183+     static_assert (false , " Unexpected CharT"  );
184+   }
185+ #  else   //  _LIBCPP_HAS_UNICODE
190186  return  __formatter::__fill (std::move (__out_it), __n, __value.__data [0 ]);
187+ #  endif  //  _LIBCPP_HAS_UNICODE
191188}
192- #  endif    //  _LIBCPP_HAS_UNICODE
193189
194190// / Writes the input to the output with the required padding.
195191// /
0 commit comments