enum enumerated { V, V, V, V, ..... }; inline const enumerated C(V); inline const enumerated C(V); inline const enumerated C(V); inline const enumerated C(V); .....
// For exposition only. // int_type is an integral type capable of representing all values of the bitmask type. enum bitmask : int_type { V = 1 << 0, V = 1 << 1, V = 1 << 2, V = 1 << 3, ..... }; inline constexpr bitmask C(V); inline constexpr bitmask C(V); inline constexpr bitmask C(V); inline constexpr bitmask C(V); ..... constexpr bitmask operator&(bitmask X, bitmask Y) { return static_cast<bitmask>( static_cast<int_type>(X) & static_cast<int_type>(Y)); } constexpr bitmask operator|(bitmask X, bitmask Y) { return static_cast<bitmask>( static_cast<int_type>(X) | static_cast<int_type>(Y)); } constexpr bitmask operator^(bitmask X, bitmask Y){ return static_cast<bitmask>( static_cast<int_type>(X) ^ static_cast<int_type>(Y)); } constexpr bitmask operator~(bitmask X){ return static_cast<bitmask>(~static_cast<int_type>(X)); } bitmask& operator&=(bitmask& X, bitmask Y){ X = X & Y; return X; } bitmask& operator|=(bitmask& X, bitmask Y) { X = X | Y; return X; } bitmask& operator^=(bitmask& X, bitmask Y) { X = X ^ Y; return X; }
streambuf* sb; // exposition only