13
A
回答
17
從n3242草案:
6.4.2 switch語句[stmt.switch]
[...]
2所述的條件應爲整體式的,枚舉類型,或者存在單個非顯式轉換函數轉換爲整數或枚舉類型(12.3)的類類型。
7.2枚舉聲明[dcl.enum]
[...]
enum-key:
enum
enum class
enum struct
這意味着肯定。
7
是,scoped(enum {class,struct})枚舉和枚舉器在switch語句的上下文中的行爲與unscoped(枚舉,舊樣式)完全相同。
n3242 - 6.4.2.2 [stmt.switch]:
的條件應是整數類型,枚舉類型,或一個類類型的的對,其中單個非顯式 轉換功能一體或枚舉類型存在(12.3)。如果條件屬於類別類型,則通過調用該轉換函數來轉換 條件,並且使用轉換結果代替本節其餘部分的原始條件 。積分促銷被執行。
case constant-expression :
其中常數表達式應整數表達式(5.19):switch語句中的任何語句 可以與一種或多種情況下的標記如下進行標記。積分常量表達式隱式轉換爲開關條件的升級類型。 中沒有兩個case常量在轉換到提升類型的開關條件後,相同的開關應具有相同的值。
在條件的情況下,枚舉類型被列出。這包括有範圍和無範圍的枚舉(參見n3242 - 7.2)。
至於案例標籤,它們必須是整型常量表達式。這是積分或枚舉類型的常量表達式(參見n3242 - 5.19.3)。
相關問題
- 1. Qt支持C++ 0x枚舉類
- 2. C++枚舉redefenition和C++ 0x中
- 3. C#在運行時切換枚舉
- 4. 在枚舉值之間切換:C++
- 5. 切換枚舉類時刪除重複
- 6. 枚舉C++類
- 7. 類C++中的枚舉聲明,在類中枚舉的問題
- 8. 的Java枚舉切換
- 9. 枚舉類C++ -replacement-在C#
- 10. g ++ C++ 0x枚舉類編譯器警告
- 11. 與protobuf的枚舉替換C++枚舉
- 12. 爲什麼我不能在目標c中切換枚舉
- 13. 枚舉類型在C++
- 14. 在Postgres中將枚舉類型整數轉換爲枚舉
- 15. Java類枚舉枚舉類
- 16. 字符串轉換枚舉在C#中
- 17. 如何在C#中轉換java枚舉#
- 18. 轉換枚舉來枚舉
- 19. 在C#枚舉#
- 20. 枚舉在C++
- 21. 枚舉在C
- 22. 在C/gcc中輸入枚舉類型
- 23. 在接口/基類中的C#枚舉?
- 24. 枚舉類對象轉換
- 25. 切換到XCode6後使用空枚舉
- 26. 切換自定義枚舉值的值
- 27. C++ - 程序中的多枚舉枚舉
- 28. 如何枚舉Objective-C中的枚舉?
- 29. 將枚舉設置爲C#類中的另一個枚舉
- 30. Node.js native枚舉中的枚舉類型
@特寫投票人:這個題外話是怎麼回事? – GManNickG 2011-06-13 07:01:51