tem*_*def 30
在C++ 03中,没有办法强制枚举类型具有任何特定的底层实现.C++规范,§7.2/ 5:
枚举的基础类型是一个整数类型,可以表示枚举中定义的所有枚举器值.它是实现定义的,其中整数类型用作枚举的基础类型,除了基础类型不应大于int,除非枚举器的值不能适合int或unsigned int.如果枚举器列表为空,则基础类型就好像枚举具有值为0的单个枚举器.应用于枚举类型,枚举类型的对象或枚举器的sizeof()的值是sizeof()应用于基础类型.
这是一个非常宽松的条件,并且说你不仅不一定知道类型,而且因为它是实现定义的,所以不能保证它甚至可以对应于一种原始类型.
但是,在C++ 0x中,他们正在修复它,以便您可以明确提到您想要的类型:
enum MyEnumeration: unsigned long {
/* ... values go here ... */
};
Run Code Online (Sandbox Code Playgroud)
这将允许您显式控制基础类型.
| 归档时间: |
|
| 查看次数: |
10635 次 |
| 最近记录: |