我們有一個用於數字數據類型的模板轉換函數。它裏面包含一個構造,使得它不能像指針一樣編譯。乘法如何爲C++枚舉工作?
template<class To, class From>
To ConvertTo(From what)
{
assert(2 * what == what * 2); // this will not compile for pointers
//skipped
}
此功能編譯和工作好吧當枚舉作爲第二模板參數傳遞:
enum TSomeEnum {
SE_First,
SE_Second
};
TSomeEnum enumValue = SE_First;
int result = ConvertTo<int>(enumValue);
以上代碼編譯和運行按預期在VC++ 7。
操作*如何爲枚舉工作?這是一種未定義的行爲嗎?
Enum的降級爲某種能夠存儲枚舉值的底層整型。降級到'int'對於C++來說是不正確的。 – 2009-07-28 12:22:32