139 using IntType = std::underlying_type_t<EnumType>;
141 FORCEINLINE
explicit TFlagIterator(IntType Flags) : RemainingFlags(Flags) {}
146 RemainingFlags &= (RemainingFlags - 1);
150 FORCEINLINE EnumType operator*()
const
153 IntType Flag = RemainingFlags & -RemainingFlags;
154 return static_cast<EnumType
>(Flag);
160 return (Lhs.RemainingFlags != Rhs.RemainingFlags);
164 IntType RemainingFlags;
170 using IntType = std::underlying_type_t<EnumType>;
172 FORCEINLINE
explicit TIterator(EnumType InFlags)
173 : Flags(IntType(InFlags))
179 const IntType PoppedBit = Flags & (~Flags + 1);
184 FORCEINLINE EnumType operator*()
const
186 const IntType Result = Flags & (~Flags + 1);
187 return (EnumType)Result;
193 return (Lhs.Flags != Rhs.Flags);