Fix handling of enums in to_string (#2036)
This commit is contained in:
parent
aabe0a8473
commit
33f9a6d360
@ -2111,6 +2111,14 @@ FMT_CONSTEXPR OutputIt write(OutputIt out, T value) {
|
|||||||
return base_iterator(out, it);
|
return base_iterator(out, it);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename Char, typename OutputIt, typename T,
|
||||||
|
FMT_ENABLE_IF(std::is_enum<T>::value &&
|
||||||
|
!std::is_same<T, Char>::value)>
|
||||||
|
FMT_CONSTEXPR OutputIt write(OutputIt out, T value) {
|
||||||
|
return write<Char>(
|
||||||
|
out, static_cast<typename std::underlying_type<T>::type>(value));
|
||||||
|
}
|
||||||
|
|
||||||
template <typename Char, typename OutputIt>
|
template <typename Char, typename OutputIt>
|
||||||
constexpr OutputIt write(OutputIt out, bool value) {
|
constexpr OutputIt write(OutputIt out, bool value) {
|
||||||
return write<Char>(out, string_view(value ? "true" : "false"));
|
return write<Char>(out, string_view(value ? "true" : "false"));
|
||||||
|
@ -1987,6 +1987,9 @@ TEST(FormatTest, ToString) {
|
|||||||
EXPECT_EQ("42", fmt::to_string(42));
|
EXPECT_EQ("42", fmt::to_string(42));
|
||||||
EXPECT_EQ("0x1234", fmt::to_string(reinterpret_cast<void*>(0x1234)));
|
EXPECT_EQ("0x1234", fmt::to_string(reinterpret_cast<void*>(0x1234)));
|
||||||
EXPECT_EQ("foo", fmt::to_string(adl_test::fmt::detail::foo()));
|
EXPECT_EQ("foo", fmt::to_string(adl_test::fmt::detail::foo()));
|
||||||
|
|
||||||
|
enum test_enum : unsigned char { test_value };
|
||||||
|
EXPECT_EQ("0", fmt::to_string(test_value));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(FormatTest, ToWString) { EXPECT_EQ(L"42", fmt::to_wstring(42)); }
|
TEST(FormatTest, ToWString) { EXPECT_EQ(L"42", fmt::to_wstring(42)); }
|
||||||
|
Loading…
Reference in New Issue
Block a user