为什么下面的开关甚至编译默认情况,因为它涵盖了枚举类的所有项目?我会认为这就是enum class
首先拥有强大的原因。
至于为什么即使我知道我涵盖了所有情况,我仍希望违约:这可以保护我免受我未来的粗心大意(以及其他同事的粗心大意)
enum class E {
a,
b
};
int main()
{
E c = E::b;
switch (c) {
case E::a:
case E::b:
std::cout << "pass" << std::endl;
break;
default:
static_assert(false, "This explodes!");
}
}