Search code examples
c++enumstype-systemsbitflags

Bitflag enums in C++


Using enums for storing bitflags in C++ is a bit troublesome, since once the enum values are ORed they loose their enum-type, which causes errors without explicit casting.

The accepted answer for this question suggests overloading the | operator:

FlagsSet operator|(FlagsSet a, FlagsSet b) 
{ 
    return FlagsSet(int(a) | int(b)); 
}

I'd like to know if this method has any runtime implications?


Solution

  • Runtime implications in terms of correctness? No - this should be exactly what you want.

    Runtime implications in terms of speed? I would expect any decent compiler to optimize this away properly to the minimal number of instructions for a release build (although you might want to add inline just to be sure).