mirror of
https://github.com/fmtlib/fmt.git
synced 2025-07-30 10:47:35 +02:00
Improve xchar support for std::bitset formatter
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
This commit is contained in:
committed by
Victor Zverovich
parent
e3ddede6c4
commit
880e1494dc
@ -184,7 +184,8 @@ FMT_END_NAMESPACE
|
|||||||
FMT_BEGIN_NAMESPACE
|
FMT_BEGIN_NAMESPACE
|
||||||
FMT_EXPORT
|
FMT_EXPORT
|
||||||
template <std::size_t N, typename Char>
|
template <std::size_t N, typename Char>
|
||||||
struct formatter<std::bitset<N>, Char> : nested_formatter<string_view> {
|
struct formatter<std::bitset<N>, Char>
|
||||||
|
: nested_formatter<basic_string_view<Char>, Char> {
|
||||||
private:
|
private:
|
||||||
// Functor because C++11 doesn't support generic lambdas.
|
// Functor because C++11 doesn't support generic lambdas.
|
||||||
struct writer {
|
struct writer {
|
||||||
@ -204,7 +205,7 @@ struct formatter<std::bitset<N>, Char> : nested_formatter<string_view> {
|
|||||||
template <typename FormatContext>
|
template <typename FormatContext>
|
||||||
auto format(const std::bitset<N>& bs, FormatContext& ctx) const
|
auto format(const std::bitset<N>& bs, FormatContext& ctx) const
|
||||||
-> decltype(ctx.out()) {
|
-> decltype(ctx.out()) {
|
||||||
return write_padded(ctx, writer{bs});
|
return this->write_padded(ctx, writer{bs});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -491,6 +491,13 @@ TEST(locale_test, sign) {
|
|||||||
EXPECT_EQ(fmt::format(std::locale(), L"{:L}", -50), L"-50");
|
EXPECT_EQ(fmt::format(std::locale(), L"{:L}", -50), L"-50");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(std_test_xchar, format_bitset) {
|
||||||
|
auto bs = std::bitset<6>(42);
|
||||||
|
EXPECT_EQ(fmt::format(L"{}", bs), L"101010");
|
||||||
|
EXPECT_EQ(fmt::format(L"{:0>8}", bs), L"00101010");
|
||||||
|
EXPECT_EQ(fmt::format(L"{:-^12}", bs), L"---101010---");
|
||||||
|
}
|
||||||
|
|
||||||
TEST(std_test_xchar, complex) {
|
TEST(std_test_xchar, complex) {
|
||||||
auto s = fmt::format(L"{}", std::complex<double>(1, 2));
|
auto s = fmt::format(L"{}", std::complex<double>(1, 2));
|
||||||
EXPECT_EQ(s, L"(1+2i)");
|
EXPECT_EQ(s, L"(1+2i)");
|
||||||
|
Reference in New Issue
Block a user