<分区>
为什么允许以下运算符重载?
enum class e { a, b, };
constexpr
bool operator == (e l, e r)
{ return l != r; }
constexpr
bool operator != (e l, e r)
{ return !(l == r); }
static_assert(e::a == e::b, "==");
static_assert(e::a != e::a, "!=");
我总是将 enum
视为内置类型。我无法为指向我的自定义类型的指针重新定义 operator ==
(但我想要!),但可以为相同类型的一对 enum
执行此操作。但是,两者都有内置版本的 operator ==
和 operator !=
。
这种(似乎是错误的)事情的可能目的是什么?如何利用它获利?