diff --git a/include/fmt/format-inl.h b/include/fmt/format-inl.h index b147b771..7822ac1d 100644 --- a/include/fmt/format-inl.h +++ b/include/fmt/format-inl.h @@ -18,7 +18,9 @@ #include #include #include // for std::ptrdiff_t +#if !defined(FMT_STATIC_THOUSANDS_SEPARATOR) #include +#endif #if defined(_WIN32) && defined(__MINGW32__) # include @@ -193,6 +195,7 @@ void report_error(FormatFunc func, int error_code, } } // namespace +#if !defined(FMT_STATIC_THOUSANDS_SEPARATOR) class locale { private: std::locale locale_; @@ -202,6 +205,21 @@ class locale { std::locale get() { return locale_; } }; +template +FMT_FUNC Char internal::thousands_sep(locale_provider *lp) { + std::locale loc = lp ? lp->locale().get() : std::locale(); + return std::use_facet>(loc).thousands_sep(); +} + +#else + +template +FMT_FUNC Char internal::thousands_sep(locale_provider *lp) { + return FMT_STATIC_THOUSANDS_SEPARATOR; +} + +#endif + FMT_FUNC size_t internal::count_code_points(u8string_view s) { const char8_t *data = s.data(); int num_code_points = 0; @@ -212,11 +230,6 @@ FMT_FUNC size_t internal::count_code_points(u8string_view s) { return num_code_points; } -template -FMT_FUNC Char internal::thousands_sep(locale_provider *lp) { - std::locale loc = lp ? lp->locale().get() : std::locale(); - return std::use_facet>(loc).thousands_sep(); -} FMT_FUNC void system_error::init( int err_code, string_view format_str, format_args args) { @@ -569,8 +582,9 @@ FMT_FUNC void vprint_rgb(rgb fd, rgb bg, string_view format, format_args args) { std::fputs(internal::data::RESET_COLOR, stdout); } #endif - +#if !defined(FMT_STATIC_THOUSANDS_SEPARATOR) FMT_FUNC locale locale_provider::locale() { return fmt::locale(); } +#endif FMT_END_NAMESPACE