C++ is mostly a superset of C, but not always. In particular, while enumeration values in both C and C++ implicitly convert into int, the reverse isn\'t true: only in C do i
Either leave the result as an int or static_cast:
Foo x = static_cast(Foo_First | Foo_Second); // not an error in C++