MISRA C++ 2008, 4-5-2 states: Expressions with type enum shall not be used as operands to built-in operators other than the subscript operator [ ], the assignment operator =, the equality operators == and !=, the unary & operator, and the relational operators <, <=, >, >=.
If one can use & why it is not allowed to use binary | with enums?