mirror of
https://github.com/fmtlib/fmt.git
synced 2025-03-15 16:20:59 +00:00
Add _a literal for named arguments
This commit is contained in:
parent
a63a24f2d7
commit
bc6010cc21
15
format.h
15
format.h
@ -3030,6 +3030,16 @@ struct UdlFormat {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <typename Char>
|
||||||
|
struct UdlArg {
|
||||||
|
const Char *str;
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
NamedArg<Char> operator=(T &&value) const {
|
||||||
|
return {str, std::forward<T>(value)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
|
|
||||||
inline namespace literals {
|
inline namespace literals {
|
||||||
@ -3039,6 +3049,11 @@ operator"" _format(const char *s, std::size_t) { return {s}; }
|
|||||||
inline internal::UdlFormat<wchar_t>
|
inline internal::UdlFormat<wchar_t>
|
||||||
operator"" _format(const wchar_t *s, std::size_t) { return {s}; }
|
operator"" _format(const wchar_t *s, std::size_t) { return {s}; }
|
||||||
|
|
||||||
|
inline internal::UdlArg<char>
|
||||||
|
operator"" _a(const char *s, std::size_t) { return {s}; }
|
||||||
|
inline internal::UdlArg<wchar_t>
|
||||||
|
operator"" _a(const wchar_t *s, std::size_t) { return {s}; }
|
||||||
|
|
||||||
} // inline namespace literals
|
} // inline namespace literals
|
||||||
} // namespace fmt
|
} // namespace fmt
|
||||||
#endif // FMT_USE_USER_DEFINED_LITERALS
|
#endif // FMT_USE_USER_DEFINED_LITERALS
|
||||||
|
@ -1610,4 +1610,17 @@ TEST(LiteralsTest, Format) {
|
|||||||
EXPECT_EQ(format("{}c{}", "ab", 1), "{}c{}"_format("ab", 1));
|
EXPECT_EQ(format("{}c{}", "ab", 1), "{}c{}"_format("ab", 1));
|
||||||
EXPECT_EQ(format(L"{}c{}", L"ab", 1), L"{}c{}"_format(L"ab", 1));
|
EXPECT_EQ(format(L"{}c{}", L"ab", 1), L"{}c{}"_format(L"ab", 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(LiteralsTest, NamedArg) {
|
||||||
|
EXPECT_EQ(format("{first}{second}{first}{third}",
|
||||||
|
fmt::arg("first", "abra"), fmt::arg("second", "cad"),
|
||||||
|
fmt::arg("third", 99)),
|
||||||
|
format("{first}{second}{first}{third}",
|
||||||
|
"first"_a="abra", "second"_a="cad", "third"_a=99));
|
||||||
|
EXPECT_EQ(format(L"{first}{second}{first}{third}",
|
||||||
|
fmt::arg(L"first", L"abra"), fmt::arg(L"second", L"cad"),
|
||||||
|
fmt::arg(L"third", 99)),
|
||||||
|
format(L"{first}{second}{first}{third}",
|
||||||
|
L"first"_a=L"abra", L"second"_a=L"cad", L"third"_a=99));
|
||||||
|
}
|
||||||
#endif // FMT_USE_USER_DEFINED_LITERALS
|
#endif // FMT_USE_USER_DEFINED_LITERALS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user