https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101485
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> --- A better version of the concept sketched above: template<typename T> concept is_sane_enum = std::is_enum_v<T> && (!requires { []<std::convertible_to<bool> U>(U (*)(T, T)){}(&operator==); });