@@ -429,21 +429,20 @@ struct is_std_string_like<T, void_t<decltype(std::declval<T>().find_first_of(
429
429
: std::is_convertible<decltype(std::declval<T>().data()),
430
430
const typename T::value_type*> {};
431
431
432
- // Returns true iff the literal encoding is UTF-8.
433
- constexpr auto is_utf8_enabled () -> bool { return " \u00A7 " [1 ] == ' \xA7 ' ; }
434
- // It is a macro for better debug codegen without if constexpr.
435
- #define FMT_USE_UTF8 (!FMT_MSC_VERSION || fmt::detail::is_utf8_enabled())
436
-
437
- template <typename T> constexpr const char * narrow (const T*) { return nullptr ; }
438
- constexpr FMT_ALWAYS_INLINE const char * narrow (const char * s) { return s; }
432
+ // Check if the literal encoding is UTF-8.
433
+ enum { is_utf8_enabled = " \u00A7 " [1 ] == ' \xA7 ' };
434
+ enum { use_utf8 = !FMT_MSC_VERSION || is_utf8_enabled };
439
435
440
436
#ifndef FMT_UNICODE
441
437
# define FMT_UNICODE 1
442
438
#endif
443
439
444
- static_assert (!FMT_UNICODE || FMT_USE_UTF8 ,
440
+ static_assert (!FMT_UNICODE || use_utf8 ,
445
441
" Unicode support requires compiling with /utf-8" );
446
442
443
+ template <typename T> constexpr const char * narrow (const T*) { return nullptr ; }
444
+ constexpr FMT_ALWAYS_INLINE const char * narrow (const char * s) { return s; }
445
+
447
446
template <typename Char>
448
447
FMT_CONSTEXPR auto compare (const Char* s1, const Char* s2, std::size_t n)
449
448
-> int {
@@ -2931,7 +2930,8 @@ FMT_API void vprint_buffered(FILE* f, string_view fmt, format_args args);
2931
2930
template <typename ... T>
2932
2931
FMT_INLINE void print (format_string<T...> fmt, T&&... args) {
2933
2932
vargs<T...> va = {{args...}};
2934
- if (!FMT_USE_UTF8) return detail::vprint_mojibake (stdout, fmt.str , va, false );
2933
+ if (!detail::use_utf8)
2934
+ return detail::vprint_mojibake (stdout, fmt.str , va, false );
2935
2935
return detail::is_locking<T...>() ? vprint_buffered (stdout, fmt.str , va)
2936
2936
: vprint (fmt.str , va);
2937
2937
}
@@ -2947,7 +2947,7 @@ FMT_INLINE void print(format_string<T...> fmt, T&&... args) {
2947
2947
template <typename ... T>
2948
2948
FMT_INLINE void print (FILE* f, format_string<T...> fmt, T&&... args) {
2949
2949
vargs<T...> va = {{args...}};
2950
- if (!FMT_USE_UTF8 ) return detail::vprint_mojibake (f, fmt.str , va, false );
2950
+ if (!detail::use_utf8 ) return detail::vprint_mojibake (f, fmt.str , va, false );
2951
2951
return detail::is_locking<T...>() ? vprint_buffered (f, fmt.str , va)
2952
2952
: vprint (f, fmt.str , va);
2953
2953
}
@@ -2957,8 +2957,8 @@ FMT_INLINE void print(FILE* f, format_string<T...> fmt, T&&... args) {
2957
2957
template <typename ... T>
2958
2958
FMT_INLINE void println (FILE* f, format_string<T...> fmt, T&&... args) {
2959
2959
vargs<T...> va = {{args...}};
2960
- return FMT_USE_UTF8 ? vprintln (f, fmt.str , va)
2961
- : detail::vprint_mojibake (f, fmt.str , va, true );
2960
+ return detail::use_utf8 ? vprintln (f, fmt.str , va)
2961
+ : detail::vprint_mojibake (f, fmt.str , va, true );
2962
2962
}
2963
2963
2964
2964
// / Formats `args` according to specifications in `fmt` and writes the output
0 commit comments