overload c++ enum class operators and enable check value set
A few things that might be improved:


Use static_cast&lt;type&gt;(value) instead of (type)(value).
I'm missing an bool operator!(const x lhs).
You could also define operator&amp;&amp; and operator||.
You can make enum_value const.