Fix handling of user-defined types in format_to (#793)

This commit is contained in:
Victor Zverovich
2018-07-04 07:40:56 -07:00
parent 323b92bffe
commit c04fb91b03
2 changed files with 11 additions and 4 deletions

View File

@@ -1122,7 +1122,8 @@ class Answer {};
FMT_BEGIN_NAMESPACE
template <>
struct formatter<Answer> : formatter<int> {
auto format(Answer, fmt::format_context &ctx) -> decltype(ctx.out()) {
template <typename FormatContext>
auto format(Answer, FormatContext &ctx) -> decltype(ctx.out()) {
return formatter<int>::format(42, ctx);
}
};
@@ -1133,6 +1134,13 @@ TEST(FormatterTest, CustomFormat) {
EXPECT_EQ("0042", format("{:04}", Answer()));
}
TEST(FormatterTest, CustomFormatTo) {
char buf[10] = {};
auto end = fmt::format_to(buf, "{}", Answer());
EXPECT_EQ(end, buf + 2);
EXPECT_STREQ(buf, "42");
}
TEST(FormatterTest, WideFormatString) {
EXPECT_EQ(L"42", format(L"{}", 42));
EXPECT_EQ(L"4.2", format(L"{}", 4.2));