或者另一種說法是:編譯器是否可以假定enum
的實例只能保存它聲明的值並基於該假設進行優化?編譯器是否允許優化依賴於具有未聲明值的枚舉的分支?
enum MyType { A = 1, B = 2 };
const MyType C = static_cast<MyType>(3);
void fun(MyType m) {
switch (m) {
case A:
// ...
break;
case B:
// ...
break;
case C:
// can this be optimized away?
}
}
目前還不清楚你在問什麼?爲什麼'C'情況要優化呢?我看不出有明確的理由。 –
@πάνταῥεῖ,因爲它沒有包含在MyType列表中。 'g ++'至少會警告'case'值'3'不在枚舉類型'MyType'中 –
@RyanHaining如果你執行'const MyType C = static_cast(value)''''''比如更新你的簡歷並向法院提交法律名稱更改,以便你的同事不會因爲未來的程序員工作而感到羞愧。 –
kfsone