provide print overload for compiled format

This commit is contained in:
Daumantas Kavolis 2019-09-26 15:37:14 +01:00
parent 45a1990bab
commit 30de36aefa

View File

@ -128,12 +128,22 @@ void vprint(std::basic_ostream<Char>& os, basic_string_view<Char> format_str,
fmt::print(cerr, "Don't {}!", "panic");
\endrst
*/
template <typename S, typename... Args,
typename Char = enable_if_t<internal::is_string<S>::value, char_t<S>>>
template <typename S, typename... Args, typename Char = char_t<S>,
FMT_ENABLE_IF(internal::is_string<S>::value)>
void print(std::basic_ostream<Char>& os, const S& format_str, Args&&... args) {
vprint(os, to_string_view(format_str),
{internal::make_args_checked<Args...>(format_str, args...)});
}
// fallback print overload for types that define char_t but are not strings
// such as compiled format
template <typename S, typename... Args, typename Char = char_t<S>,
FMT_ENABLE_IF(!internal::is_string<S>::value)>
void print(std::basic_ostream<Char>& os, const S& format, Args&&... args) {
basic_memory_buffer<Char> buffer;
format_to(std::back_inserter(buffer), format, args...);
internal::write(os, buffer);
}
FMT_END_NAMESPACE
#endif // FMT_OSTREAM_H_