From 854bf9a6b871ffd9b7496d053be7f4a97436a698 Mon Sep 17 00:00:00 2001 From: Walter Gray Date: Tue, 10 Nov 2020 16:19:14 -0800 Subject: [PATCH] fixed chrono.h changes --- include/fmt/chrono.h | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/include/fmt/chrono.h b/include/fmt/chrono.h index a5e1ac92..2b80d136 100644 --- a/include/fmt/chrono.h +++ b/include/fmt/chrono.h @@ -764,15 +764,13 @@ inline std::chrono::duration get_milliseconds( template OutputIt format_duration_value(OutputIt out, Rep val, int precision) { - if (precision >= 0) - return format_to(out, FMT_STRING("{:.{}f}"), val, precision); - if (std::is_floating_point::value) { - return format_to(out, FMT_STRING("{:g}"), val); - } else { - return format_to(out, FMT_STRING("{}"), val); - } + const Char pr_f[] = {'{', ':', '.', '{', '}', 'f', '}', 0}; + if (precision >= 0) return vformat_to(out, pr_f, make_format_args(val, precision)); + const Char fp_f[] = {'{', ':', 'g', '}', 0}; + const Char format[] = {'{', '}', 0}; + return vformat_to(out, std::is_floating_point::value ? fp_f : format, + make_format_args(val)); } - template OutputIt copy_unit(string_view unit, OutputIt out, Char) { return std::copy(unit.begin(), unit.end(), out); @@ -790,9 +788,10 @@ template OutputIt format_duration_unit(OutputIt out) { if (const char* unit = get_units()) return copy_unit(string_view(unit), out, Char()); - if (const_check(Period::den == 1)) - return format_to(out, FMT_STRING("[{}]s"), Period::num); - return format_to(out, FMT_STRING("[{}/{}]s"), Period::num, Period::den); + const Char num_f[] = {'[', '{', '}', ']', 's', 0}; + if (const_check(Period::den == 1)) return vformat_to(out, num_f, make_format_args(Period::num)); + const Char num_def_f[] = {'[', '{', '}', '/', '{', '}', ']', 's', 0}; + return vformat_to(out, num_def_f, make_format_args(Period::num, Period::den)); } template