diff --git a/include/fmt/format.h b/include/fmt/format.h index d2707350..67f0ab73 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -106,6 +106,13 @@ # define FMT_NOINLINE #endif +namespace std { +template <> struct iterator_traits { + using iterator_category = output_iterator_tag; + using value_type = char; +}; +} // namespace std + #ifndef FMT_THROW # if FMT_EXCEPTIONS # if FMT_MSC_VERSION || defined(__NVCC__) diff --git a/test/format-test.cc b/test/format-test.cc index b16f11cc..0c9cba61 100644 --- a/test/format-test.cc +++ b/test/format-test.cc @@ -2057,6 +2057,13 @@ TEST(format_test, output_iterators) { EXPECT_EQ("42", s.str()); } +TEST(format_test, fill_via_appender) { + fmt::memory_buffer buf; + auto it = fmt::appender(buf); + std::fill_n(it, 3, '~'); + EXPECT_EQ(fmt::to_string(buf), "~~~"); +} + TEST(format_test, formatted_size) { EXPECT_EQ(2u, fmt::formatted_size("{}", 42)); EXPECT_EQ(2u, fmt::formatted_size(std::locale(), "{}", 42));