1*dde3f170SDavid Spickett enum class SignedEnum : int { min = -2, max = 1 }; 2*dde3f170SDavid Spickett enum class UnsignedEnum : unsigned { min = 0, max = 3 }; 3*dde3f170SDavid Spickett 4*dde3f170SDavid Spickett struct BitfieldStruct { 5*dde3f170SDavid Spickett SignedEnum signed_min : 2; 6*dde3f170SDavid Spickett SignedEnum signed_other : 2; 7*dde3f170SDavid Spickett SignedEnum signed_max : 2; 8*dde3f170SDavid Spickett UnsignedEnum unsigned_min : 2; 9*dde3f170SDavid Spickett UnsignedEnum unsigned_other : 2; 10*dde3f170SDavid Spickett UnsignedEnum unsigned_max : 2; 11*dde3f170SDavid Spickett }; 12*dde3f170SDavid Spickett main()13*dde3f170SDavid Spickettint main() { 14*dde3f170SDavid Spickett BitfieldStruct bfs; 15*dde3f170SDavid Spickett bfs.signed_min = SignedEnum::min; 16*dde3f170SDavid Spickett bfs.signed_other = static_cast<SignedEnum>(-1); 17*dde3f170SDavid Spickett bfs.signed_max = SignedEnum::max; 18*dde3f170SDavid Spickett 19*dde3f170SDavid Spickett bfs.unsigned_min = UnsignedEnum::min; 20*dde3f170SDavid Spickett bfs.unsigned_other = static_cast<UnsignedEnum>(1); 21*dde3f170SDavid Spickett bfs.unsigned_max = UnsignedEnum::max; 22*dde3f170SDavid Spickett 23*dde3f170SDavid Spickett return 0; // break here 24*dde3f170SDavid Spickett } 25