考虑一下这个C++ 11代码:
enum class Color : char { red = 0x1, yellow = 0x2 }
// ...
char *data = ReadFile();
Color color = static_cast<Color>(data[0]);
Run Code Online (Sandbox Code Playgroud)
假设数据[0]实际上是100.根据标准设置的颜色是什么?特别是如果我以后做的话
switch (color) {
// ... red and yellow cases omitted
default:
// handle error
break;
}
Run Code Online (Sandbox Code Playgroud)
标准是否保证会触发默认值?如果没有,在这里检查错误的正确,最有效,最优雅的方法是什么?
编辑:
作为奖励,该标准是否对此有任何保证,但是用简单的枚举?