C++ bitmask enums appear to be offset by 1

I’ve found a work-around by elliminating all the explicit values and removing the “None” enumeration. X, Y, and Z take the expected values when this is the case.

UENUM(BlueprintType)
enum class EMovementTrackingFlags : uint8
{
	X,
	Y,
	Z
};
ENUM_CLASS_FLAGS(EMovementTrackingFlags);

This necessitates work-arounds in order to evaluate the flags.

bool UTargetTrackingComponent::IsMovementFlagged(EMovementTrackingFlags testTrackingFlag)
{
	EMovementTrackingFlags flagValue = (EMovementTrackingFlags)movementTrackingFlags;
	return ((flagValue & testTrackingFlag) != (EMovementTrackingFlags) 0 );
}

and…

movementTrackingFlags != 0

This is in direct contradiction to the code indicated on the Unreal Code Standards page, E.G:

    enum class EFlags
        {
            None  = 0x00,
            Flag1 = 0x01,
            Flag2 = 0x02,
            Flag3 = 0x04
        };
    
        ENUM_CLASS_FLAGS(EFlags)

As well as…

if (Flags & EFlags::Flag1)

This causes my code to behave and appear in editor as expected. However, I am leaving this thread open should staff weigh in on this.