Update fmt::join to support more character types (#4686)

This commit is contained in:
Yancey
2026-03-05 00:14:08 +08:00
committed by GitHub
parent e2bf61cdf8
commit 8277ee6aa0
4 changed files with 41 additions and 20 deletions
+13 -2
View File
@@ -167,9 +167,20 @@ TEST(xchar_test, print) {
TEST(xchar_test, join) {
int v[3] = {1, 2, 3};
EXPECT_EQ(fmt::format(u"({})", fmt::join(v, v + 3, u", ")), u"(1, 2, 3)");
EXPECT_EQ(fmt::format(U"({})", fmt::join(v, v + 3, U", ")), U"(1, 2, 3)");
EXPECT_EQ(fmt::format(L"({})", fmt::join(v, v + 3, L", ")), L"(1, 2, 3)");
auto t = std::tuple<wchar_t, int, float>('a', 1, 2.0f);
EXPECT_EQ(fmt::format(L"({})", fmt::join(t, L", ")), L"(a, 1, 2)");
auto vector = std::vector<int>{1, 2, 3};
EXPECT_EQ(fmt::format(u"({})", fmt::join(vector, u", ")), u"(1, 2, 3)");
EXPECT_EQ(fmt::format(U"({})", fmt::join(vector, U", ")), U"(1, 2, 3)");
EXPECT_EQ(fmt::format(L"({})", fmt::join(vector, L", ")), L"(1, 2, 3)");
EXPECT_EQ(fmt::format(L"({})", fmt::join({1, 2, 3}, L", ")), L"(1, 2, 3)");
auto tuple_char16 = std::tuple<char16_t, int, float>(u'a', 1, 2.0f);
EXPECT_EQ(fmt::format(u"({})", fmt::join(tuple_char16, u", ")), u"(a, 1, 2)");
auto tuple_char32 = std::tuple<char32_t, int, float>(U'a', 1, 2.0f);
EXPECT_EQ(fmt::format(U"({})", fmt::join(tuple_char32, U", ")), U"(a, 1, 2)");
auto tuple_wchar = std::tuple<wchar_t, int, float>(L'a', 1, 2.0f);
EXPECT_EQ(fmt::format(L"({})", fmt::join(tuple_wchar, L", ")), L"(a, 1, 2)");
}
#ifdef __cpp_lib_byte