For unscoped enumerations, the answer is "most of them" because of the implicit conversions to the underlying integral type. However, scoped enumerations do not have this implicit conversion. Instead, some but not all of the operators available for unscoped enumerations are defined for them.
#include <iostream>
enum class Color{
Red,
Green,
Blue
};
int main()
{
std::cout << (Color::Red < Color::Green) << '\n';
// Fine, operator< is defined for Color
std::cout << (Color::Red + Color::Green == Color::Green) << '\n';
// no match for 'operator+'
}
My guess would be that the relational operators are defined but the arithmetic ones aren't, but I don't see anything explicitly saying so on the cppreference page and have not done the actual standard diving to know what C++ proper has to say about the matter.