Here is how to overload the |= operator globally for an enum in C++. class MyClass { public: enum Property { NoProperty = 0, Flat = 1, Orange = 2, Soft = 4 }; //...// }; inline MyClass::Property& operator|=(MyClass::Property& a, MyClass::Property const b) { a = static_cast<MyClass::Property>(static_cast<int>(a) | static_cast<int>(b)); return a; }