[clang] [Clang] Make enums trivially equality comparable (PR #133587)

via cfe-commits cfe-commits at lists.llvm.org
Sun Mar 30 21:14:05 PDT 2025


================
@@ -3873,6 +3873,11 @@ static_assert(!__is_trivially_equality_comparable(NonTriviallyEqualityComparable
 
 #if __cplusplus >= 202002L
 
+enum TriviallyEqualityComparableEnum {
+  x, y
+};
+static_assert(__is_trivially_equality_comparable(TriviallyEqualityComparableEnum));
+
----------------
halbi2 wrote:

This is very nice, thank you!

At line 3853 add:
```
static_assert(__is_trivially_equality_comparable(Enum));
static_assert(__is_trivially_equality_comparable(SignedEnum));
static_assert(__is_trivially_equality_comparable(UnsignedEnum));
static_assert(__is_trivially_equality_comparable(EnumClass));
static_assert(__is_trivially_equality_comparable(SignedEnumClass));
static_assert(__is_trivially_equality_comparable(UnsignedEnumClass));
```

It would be beneficial also to test that the compiler does not crash in this case:
```
enum E { e };
static_assert(__is_trivially_equality_comparable(E));
bool operator==(E, E);
static_assert(!__is_trivially_equality_comparable(E));
```

https://github.com/llvm/llvm-project/pull/133587


More information about the cfe-commits mailing list