我们有一个用于数字数据类型的模板转换函数。它内部包含一个构造,使其无法使用指针等类型进行编译。
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 上按预期编译和运行。
* 操作如何用于枚举?这是一种未定义行为的方式吗?
最佳答案
枚举降级为整数(旧的 C 功能),这就是为什么它可以工作。我不认为这是未定义的行为,尽管它可能是您不希望/不期望的那种行为。
关于c++ - 乘法如何用于 C++ 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1193586/