diff --git a/include/fmt/format.h b/include/fmt/format.h index 930dfae8..38820e3c 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -2374,15 +2374,13 @@ class basic_writer { /** Constructs a ``basic_writer`` object. */ explicit basic_writer(Range out): out_(out.begin()) {} - void write(int value) { - write_decimal(value); - } - void write(long value) { - write_decimal(value); - } - void write(long long value) { - write_decimal(value); - } + void write(int value) { write_decimal(value); } + void write(long value) { write_decimal(value); } + void write(long long value) { write_decimal(value); } + + void write(unsigned value) { write_decimal(value); } + void write(unsigned long value) { write_decimal(value); } + void write(unsigned long long value) { write_decimal(value); } /** \rst @@ -2955,9 +2953,9 @@ typename basic_context::format_arg /** Formats arguments and writes the output to the buffer. */ template -void do_vformat_to(typename ArgFormatter::range out, - basic_string_view format_str, - basic_format_args args) { +typename Context::iterator do_vformat_to(typename ArgFormatter::range out, + basic_string_view format_str, + basic_format_args args) { using iterator = internal::null_terminating_iterator; using range = typename ArgFormatter::range; @@ -3012,9 +3010,9 @@ void do_vformat_to(typename ArgFormatter::range out, Context context; basic_arg arg; - }; - parse_format_string(iterator(format_str.begin(), format_str.end()), - handler(out, format_str, args)); + } h(out, format_str, args); + parse_format_string(iterator(format_str.begin(), format_str.end()), h); + return h.context.begin(); } // Casts ``p`` to ``const void*`` for pointer formatting. @@ -3102,16 +3100,16 @@ template using format_args_t = basic_format_args>; template -inline void vformat_to(OutputIt out, string_view format_str, - format_args_t args) { +inline OutputIt vformat_to(OutputIt out, string_view format_str, + format_args_t args) { using range = output_range; - do_vformat_to>(range(out), format_str, args); + return do_vformat_to>(range(out), format_str, args); } template -inline void format_to(OutputIt out, string_view format_str, - const Args & ... args) { - vformat_to(out, format_str, *make_args>(args...)); +inline OutputIt format_to(OutputIt out, string_view format_str, + const Args & ... args) { + return vformat_to(out, format_str, *make_args>(args...)); } template