enum class T##Bits : INT_T; \
inline constexpr INT_T to_integer(T##Bits e) { return static_cast<INT_T>(e); } \
inline T##Bits operator & (T##Bits x, T##Bits y) { return static_cast<T##Bits>(static_cast<INT_T>(x) & static_cast<INT_T>(y)); }; \
inline T##Bits operator | (T##Bits x, T##Bits y) { return static_cast<T##Bits>(static_cast<INT_T>(x) | static_cast<INT_T>(y)); }; \
inline T##Bits operator ^ (T##Bits x, T##Bits y) { return static_cast<T##Bits>(static_cast<INT_T>(x) ^ static_cast<INT_T>(y)); }; \
inline T##Bits operator ~ (T##Bits x) { return static_cast<T##Bits>(~static_cast<INT_T>(x)); }; \
inline T##Bits& operator &= (T##Bits& x, T##Bits y) { x = static_cast<T##Bits>(x & y); return x; }; \
inline T##Bits& operator |= (T##Bits& x, T##Bits y) { x = static_cast<T##Bits>(x | y); return x; }; \
inline T##Bits& operator ^= (T##Bits& x, T##Bits y) { x = static_cast<T##Bits>(x ^ y); return x; }; \
enum class T##Bits : INT_T {
std::unique_ptr< T, StlDeleter< T > > UniquePtr
std::unique_ptr with custom deleter that uses a Foundation::Core::Allocator to deallocate memory.
Definition Allocator.hpp:161
Defines a bitmask enum type {T}Bits with underlying integer type INT_T whilst defining a wrapper class of type T that provides bitwise operators.