This commit is contained in:
Victor Zverovich 2020-10-27 07:19:28 -07:00
parent 236fea1f00
commit 28a8eae850
3 changed files with 19 additions and 19 deletions

View File

@ -589,10 +589,10 @@ OutputIt vformat_to(
\endrst \endrst
*/ */
template <typename OutputIt, typename S, typename... Args, template <typename OutputIt, typename S, typename... Args,
bool enable = (detail::is_output_iterator<OutputIt, char_t<S>>::value&& bool enable = detail::is_output_iterator<OutputIt, char_t<S>>::value&&
detail::is_string<S>::value)> detail::is_string<S>::value>
inline auto format_to(OutputIt out, const text_style& ts, inline auto format_to(OutputIt out, const text_style& ts, const S& format_str,
const S& format_str, Args&&... args) -> Args&&... args) ->
typename std::enable_if<enable, OutputIt>::type { typename std::enable_if<enable, OutputIt>::type {
return vformat_to(out, ts, to_string_view(format_str), return vformat_to(out, ts, to_string_view(format_str),
fmt::make_args_checked<Args...>(format_str, args...)); fmt::make_args_checked<Args...>(format_str, args...));

View File

@ -668,13 +668,14 @@ OutputIt format_to(OutputIt out, const S&, const Args&... args) {
} }
template <typename OutputIt, typename CompiledFormat, typename... Args> template <typename OutputIt, typename CompiledFormat, typename... Args>
typename std::enable_if<(detail::is_output_iterator< auto format_to_n(OutputIt out, size_t n, const CompiledFormat& cf,
OutputIt, typename CompiledFormat::char_type>::value&& const Args&... args) ->
typename std::enable_if<
detail::is_output_iterator<OutputIt,
typename CompiledFormat::char_type>::value &&
std::is_base_of<detail::basic_compiled_format, std::is_base_of<detail::basic_compiled_format,
CompiledFormat>::value), CompiledFormat>::value,
format_to_n_result<OutputIt> format_to_n_result<OutputIt>>::type {
>::type format_to_n(OutputIt out, size_t n,
const CompiledFormat& cf, const Args&... args) {
auto it = auto it =
format_to(detail::truncating_iterator<OutputIt>(out, n), cf, args...); format_to(detail::truncating_iterator<OutputIt>(out, n), cf, args...);
return {it.base(), it.count()}; return {it.base(), it.count()};

View File

@ -3056,8 +3056,7 @@ struct format_handler : detail::error_handler {
basic_format_parse_context<Char> parse_context; basic_format_parse_context<Char> parse_context;
Context context; Context context;
format_handler(OutputIt out, format_handler(OutputIt out, basic_string_view<Char> str,
basic_string_view<Char> str,
basic_format_args<Context> format_args, detail::locale_ref loc) basic_format_args<Context> format_args, detail::locale_ref loc)
: parse_context(str), context(out, format_args, loc) {} : parse_context(str), context(out, format_args, loc) {}
@ -3080,8 +3079,8 @@ struct format_handler : detail::error_handler {
FMT_INLINE void on_replacement_field(int id, const Char*) { FMT_INLINE void on_replacement_field(int id, const Char*) {
auto arg = get_arg(context, id); auto arg = get_arg(context, id);
context.advance_to(visit_format_arg( context.advance_to(visit_format_arg(
default_arg_formatter<OutputIt, Char>{ default_arg_formatter<OutputIt, Char>{context.out(), context.args(),
context.out(), context.args(), context.locale()}, context.locale()},
arg)); arg));
} }
@ -3105,8 +3104,8 @@ struct format_handler : detail::error_handler {
if (begin == end || *begin != '}') if (begin == end || *begin != '}')
on_error("missing '}' in format string"); on_error("missing '}' in format string");
} }
context.advance_to( context.advance_to(visit_format_arg(
visit_format_arg(arg_formatter<OutputIt, Char>(context, &parse_context, &specs), arg)); arg_formatter<OutputIt, Char>(context, &parse_context, &specs), arg));
return begin; return begin;
} }
}; };
@ -3776,8 +3775,8 @@ void detail::vformat_to(
arg); arg);
return; return;
} }
format_handler<iterator, Char, buffer_context<Char>> h( format_handler<iterator, Char, buffer_context<Char>> h(out, format_str, args,
out, format_str, args, loc); loc);
parse_format_string<false>(format_str, h); parse_format_string<false>(format_str, h);
} }