Add support for incomplete types

This commit is contained in:
LocalSpook
2025-03-11 20:28:11 -07:00
committed by Victor Zverovich
parent db405954cd
commit c709138359
2 changed files with 32 additions and 1 deletions

View File

@ -2540,3 +2540,29 @@ TEST(base_test, format_byte) {
EXPECT_EQ(s, "42");
}
#endif
// Only defined after the test case.
struct incomplete_type;
extern const incomplete_type& external_instance;
FMT_BEGIN_NAMESPACE
template <> struct formatter<incomplete_type> : formatter<int> {
auto format(const incomplete_type& x, context& ctx) const -> appender;
};
FMT_END_NAMESPACE
TEST(incomplete_type_test, format) {
EXPECT_EQ(fmt::format("{}", external_instance), "42");
}
struct incomplete_type {
int i;
};
const incomplete_type& external_instance = {42};
auto fmt::formatter<incomplete_type>::format(const incomplete_type& x,
fmt::context& ctx) const
-> fmt::appender {
return formatter<int>::format(x.i, ctx);
}