This was a bug, and is already fixed. (I can look up the bug number if
you're interested, but in essence the problem was that we were failing to
determine that 'E' is signed.)
Thanks Richard, I was unsure if it was a bug since the standard seems to be
ambiguous about how to compare scoped enumerations (making no mention about
the underlying type).
<5 note 9>
Many binary operators that expect operands of arithmetic or enumeration type cause conversions and yield result types in a similar way. The purpose is to yield a common type, which is also the type of the result. This pattern is called the usual arithmetic conversions, which are defined as follows:
— If either operand is of scoped enumeration type (7.2), no conversions are performed; if the other operand does not have the same type, the expression is ill-formed.