C++ bitmask enums appear to be offset by 1

Had the same problem and ended doing something similar.

I declared the enum normally, as you did.

But for operations I would instead create a conversion from your enum to flag:

#define TOFLAG(Enum) (1 << static_cast<uint8>(Enum))

That way, you can just do normal flag operations:

bool bFlagFound = Flags & TOFLAG(EGridPointFlags::Discovered)
// or
bool bFlagFound = Flags & TOFLAG(MyEnumVariable) 

That was my final solution, found it to be the easier way.

Greetings!