[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