это начиная от ц++11. template< class T > struct underlying_type; (since C++11)
проще использовать:
enum SomeEnum mix =EOne |ETwo;
против
enum SomeEnum left = EOne;
enum SomeEnum right = ETwo;
enum SomeEnum mix = left | right;
и ничего не надо поправлять для других enum