Deprecated implicit conversion of enums to ints for consistency with scoped enums

This commit is contained in:
Victor Zverovich
2022-07-03 08:05:47 -07:00
parent c12b4c0cf1
commit 0c06c81da8
7 changed files with 23 additions and 19 deletions

View File

@@ -1756,6 +1756,7 @@ TEST(format_test, group_digits_view) {
}
enum test_enum { foo, bar };
auto format_as(test_enum e) -> int { return e; }
TEST(format_test, join) {
using fmt::join;
@@ -1902,6 +1903,7 @@ TEST(format_test, formatter_not_specialized) {
#if FMT_HAS_FEATURE(cxx_strong_enums)
enum big_enum : unsigned long long { big_enum_value = 5000000000ULL };
auto format_as(big_enum e) -> unsigned long long { return e; }
TEST(format_test, strong_enum) {
EXPECT_EQ("5000000000", fmt::format("{}", big_enum_value));
@@ -1983,9 +1985,7 @@ TEST(format_test, to_string) {
EXPECT_EQ(fmt::to_string(reinterpret_cast<void*>(0x1234)), "0x1234");
EXPECT_EQ(fmt::to_string(adl_test::fmt::detail::foo()), "foo");
EXPECT_EQ(fmt::to_string(convertible_to_int()), "42");
enum foo : unsigned char { zero };
EXPECT_EQ(fmt::to_string(zero), "0");
EXPECT_EQ(fmt::to_string(foo), "0");
#if FMT_USE_FLOAT128
EXPECT_EQ(fmt::to_string(__float128(0.5)), "0.5");

View File

@@ -54,6 +54,7 @@ auto operator<<(std::ostream& os, streamable_enum) -> std::ostream& {
}
enum unstreamable_enum {};
auto format_as(unstreamable_enum e) -> int { return e; }
struct empty_test {};
auto operator<<(std::ostream& os, empty_test) -> std::ostream& {

View File

@@ -504,6 +504,7 @@ TEST(printf_test, pointer) {
}
enum test_enum { answer = 42 };
auto format_as(test_enum e) -> int { return e; }
TEST(printf_test, enum) {
EXPECT_PRINTF("42", "%d", answer);

View File

@@ -224,6 +224,7 @@ TEST(ranges_test, range) {
}
enum test_enum { foo };
auto format_as(test_enum e) -> int { return e; }
TEST(ranges_test, enum_range) {
auto v = std::vector<test_enum>{test_enum::foo};

View File

@@ -222,6 +222,7 @@ struct formatter<streamable_enum, wchar_t> : basic_ostream_formatter<wchar_t> {
} // namespace fmt
enum unstreamable_enum {};
auto format_as(unstreamable_enum e) -> int { return e; }
TEST(xchar_test, enum) {
EXPECT_EQ(L"streamable_enum", fmt::format(L"{}", streamable_enum()));