diff --git a/include/fmt/chrono.h b/include/fmt/chrono.h index 2349fd8c..e7c464a4 100644 --- a/include/fmt/chrono.h +++ b/include/fmt/chrono.h @@ -764,18 +764,15 @@ inline std::chrono::duration get_milliseconds( template OutputIt format_duration_value(OutputIt out, Rep val, int precision) { - using context = FMT_BUFFER_CONTEXT(type_identity_t); - - const Char pr_f[] = {'{', ':', '.', '{', '}', 'f', '}', 0}; - if (precision >= 0) { - return vformat_to(out, to_string_view(pr_f), - make_format_args(val, precision)); + static constexpr const Char pr_f[] = {'{', ':', '.', '{', '}', 'f', '}', 0}; + if (precision >= 0) return format_to(out, FMT_STRING(pr_f), val, precision); + static constexpr const Char fp_f[] = {'{', ':', 'g', '}', 0}; + static constexpr const Char format[] = {'{', '}', 0}; + if(std::is_floating_point::value) { + return format_to(out, FMT_STRING(fp_f), val); + } else { + return format_to(out, FMT_STRING(format), val); } - const Char fp_f[] = {'{', ':', 'g', '}', 0}; - const Char format[] = {'{', '}', 0}; - return vformat_to( - out, to_string_view(std::is_floating_point::value ? fp_f : format), - make_format_args(val)); } template @@ -793,19 +790,12 @@ OutputIt copy_unit(string_view unit, OutputIt out, wchar_t) { template OutputIt format_duration_unit(OutputIt out) { - using context = FMT_BUFFER_CONTEXT(type_identity_t); - - if (const char* unit = get_units()) { + if (const char* unit = get_units()) return copy_unit(string_view(unit), out, Char()); - } - const Char num_f[] = {'[', '{', '}', ']', 's', 0}; - if (const_check(Period::den == 1)) { - return vformat_to(out, to_string_view(num_f), - make_format_args(Period::num)); - } - const Char num_def_f[] = {'[', '{', '}', '/', '{', '}', ']', 's', 0}; - return vformat_to(out, to_string_view(num_def_f), - make_format_args(Period::num, Period::den)); + static constexpr const Char num_f[] = {'[', '{', '}', ']', 's', 0}; + if (const_check(Period::den == 1)) return format_to(out, FMT_STRING(num_f), Period::num); + static constexpr const Char num_def_f[] = {'[', '{', '}', '/', '{', '}', ']', 's', 0}; + return format_to(out, FMT_STRING(num_def_f), Period::num, Period::den); } template