diff --git a/include/fmt/core.h b/include/fmt/core.h index 2e9e8451..9985c036 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -1762,11 +1762,13 @@ make_args_checked(const S& format_str, return {args...}; } -template +template ::value)> std::basic_string vformat( basic_string_view format_str, basic_format_args>> args); +std::string vformat(string_view format_str, format_args args); + template typename buffer_context::iterator vformat_to( buffer& buf, basic_string_view format_str, diff --git a/include/fmt/format-inl.h b/include/fmt/format-inl.h index 3bddb8eb..d0080907 100644 --- a/include/fmt/format-inl.h +++ b/include/fmt/format-inl.h @@ -1365,6 +1365,12 @@ FMT_FUNC void report_system_error(int error_code, report_error(format_system_error, error_code, message); } +FMT_FUNC std::string detail::vformat(string_view format_str, format_args args) { + memory_buffer buffer; + detail::vformat_to(buffer, format_str, args); + return to_string(buffer); +} + FMT_FUNC void vprint(std::FILE* f, string_view format_str, format_args args) { memory_buffer buffer; detail::vformat_to(buffer, format_str, diff --git a/include/fmt/format.h b/include/fmt/format.h index 65818ab3..ff4eaa46 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -3440,7 +3440,7 @@ inline format_to_n_result format_to_n(OutputIt out, size_t n, make_format_args(args...)); } -template +template ::value), int>> std::basic_string detail::vformat( basic_string_view format_str, basic_format_args>> args) { diff --git a/src/format.cc b/src/format.cc index fd1e1c15..bc06c089 100644 --- a/src/format.cc +++ b/src/format.cc @@ -44,9 +44,6 @@ template FMT_API char detail::decimal_point_impl(locale_ref); template FMT_API void detail::buffer::append(const char*, const char*); -template FMT_API std::string detail::vformat( - string_view, basic_format_args); - template FMT_API format_context::iterator detail::vformat_to( detail::buffer&, string_view, basic_format_args);