mirror of
https://github.com/fmtlib/fmt.git
synced 2024-11-26 20:20:04 +00:00
Added support for strings containing '\0' in udl (#619)
This commit is contained in:
parent
84bd2f1962
commit
3aaa25fa70
@ -4093,7 +4093,7 @@ class udl_formatter {
|
||||
# else
|
||||
template <typename Char>
|
||||
struct udl_formatter {
|
||||
const Char *str;
|
||||
basic_string_view<Char> str;
|
||||
|
||||
template <typename... Args>
|
||||
auto operator()(Args && ... args) const
|
||||
@ -4134,9 +4134,9 @@ constexpr internal::udl_formatter<Char, CHARS...> operator""_format() {
|
||||
\endrst
|
||||
*/
|
||||
inline internal::udl_formatter<char>
|
||||
operator"" _format(const char *s, std::size_t) { return {s}; }
|
||||
operator"" _format(const char *s, std::size_t n) { return {{s, n}}; }
|
||||
inline internal::udl_formatter<wchar_t>
|
||||
operator"" _format(const wchar_t *s, std::size_t) { return {s}; }
|
||||
operator"" _format(const wchar_t *s, std::size_t n) { return {{s, n}}; }
|
||||
# endif // FMT_UDL_TEMPLATE
|
||||
|
||||
/**
|
||||
|
@ -1469,6 +1469,11 @@ TEST(LiteralsTest, Format) {
|
||||
EXPECT_EQ(format("{}c{}", "ab", 1), udl_format);
|
||||
auto udl_format_w = L"{}c{}"_format(L"ab", 1);
|
||||
EXPECT_EQ(format(L"{}c{}", L"ab", 1), udl_format_w);
|
||||
|
||||
auto udl_format_null_char = "{}c\0d{}"_format("ab", 1);
|
||||
EXPECT_EQ(format("{}c\0d{}", "ab", 1), udl_format_null_char);
|
||||
auto udl_format_w_null_char = L"{}c\0d{}"_format(L"ab", 1);
|
||||
EXPECT_EQ(format(L"{}c\0d{}", L"ab", 1), udl_format_w_null_char);
|
||||
}
|
||||
|
||||
TEST(LiteralsTest, NamedArg) {
|
||||
@ -1529,6 +1534,7 @@ TEST(FormatTest, CustomArgFormatter) {
|
||||
|
||||
TEST(FormatTest, NonNullTerminatedFormatString) {
|
||||
EXPECT_EQ("42", format(string_view("{}foo", 2), 42));
|
||||
EXPECT_EQ("42f\0oo", format(string_view("{}f\0oo", 6), 42));
|
||||
}
|
||||
|
||||
struct variant {
|
||||
|
Loading…
Reference in New Issue
Block a user