mirror of
https://github.com/fmtlib/fmt.git
synced 2025-07-31 19:24:48 +02:00
Enable compilation for all types
This commit is contained in:
@@ -468,12 +468,8 @@ constexpr auto compile_format_string(S format_str) {
|
|||||||
return parse_tail<Args, POS + 2, ID>(make_text(str, POS, 1), format_str);
|
return parse_tail<Args, POS + 2, ID>(make_text(str, POS, 1), format_str);
|
||||||
} else if constexpr (str[POS + 1] == '}') {
|
} else if constexpr (str[POS + 1] == '}') {
|
||||||
using type = get_type<ID, Args>;
|
using type = get_type<ID, Args>;
|
||||||
if constexpr (std::is_same<type, int>::value) {
|
return parse_tail<Args, POS + 2, ID + 1>(field<char_type, type, ID>(),
|
||||||
return parse_tail<Args, POS + 2, ID + 1>(field<char_type, type, ID>(),
|
format_str);
|
||||||
format_str);
|
|
||||||
} else {
|
|
||||||
return unknown_format();
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return unknown_format();
|
return unknown_format();
|
||||||
}
|
}
|
||||||
@@ -565,7 +561,7 @@ FMT_INLINE std::basic_string<typename S::char_type> format(S, Args&&... args) {
|
|||||||
if (str.size() == 2 && str[0] == '{' && str[1] == '}')
|
if (str.size() == 2 && str[0] == '{' && str[1] == '}')
|
||||||
return fmt::to_string(detail::first(args...));
|
return fmt::to_string(detail::first(args...));
|
||||||
constexpr auto compiled = compile<Args...>(S());
|
constexpr auto compiled = compile<Args...>(S());
|
||||||
return format(compiled, std::forward<Args...>(args...));
|
return format(compiled, std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename OutputIt, typename CompiledFormat, typename... Args,
|
template <typename OutputIt, typename CompiledFormat, typename... Args,
|
||||||
|
@@ -142,3 +142,10 @@ TEST(CompileTest, EmptyFormatString) {
|
|||||||
auto f = fmt::compile<>("");
|
auto f = fmt::compile<>("");
|
||||||
EXPECT_EQ(fmt::format(f), "");
|
EXPECT_EQ(fmt::format(f), "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __cpp_if_constexpr
|
||||||
|
TEST(CompileTest, Basic) {
|
||||||
|
EXPECT_EQ("42", fmt::format(FMT_COMPILE("{}"), 42));
|
||||||
|
EXPECT_EQ("foo", fmt::format(FMT_COMPILE("{}"), "foo"));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
Reference in New Issue
Block a user