ビット表現に使い出した時点で、列挙型じゃなくてただの定数だしね。
値の受け取りも結局ただのintでしかなくなっちゃうので、
コンパイル時のエラー検出云々は一切できないし。

話がズレるけど、enumがその辺の責任まで負わされちゃってるのは

static const int CONSTANT = 0xdead;

みたいな定数式を、クラスメンバの定義に書いとくことができない
比較的古めのコンパイラのせいもあって、慣習的にそうなっちゃてるだけで、
enumをビット操作用(に限らず、任意の値の定数の定義)に使うのは、
列挙という意味では確かに正しくは無いという認識でOK?