From what I know (from what I read in the cpp-programming-language) the size would be the size of \"some integral type that can hold its range and not larger than sizeof(int
In C++11 you can use an enum class, where you can specify the underlying type. In C++03 there is no solution.
You can in C++11:
enum /*class*/ MyEnum : unsigned long
{
Val1,
Val2
};
(You can specify the size of an enum either for the old-style enum or the new-style enum class.)
You can also increase the minimum size of an enum by fun trickery, taking advantage of the last phrase of the sentence that you cited:
enum MyEnum
{
Val1,
Val2,
ForceSize = 0xFFFFFFFF // do not use
};
…which will ensure that the enum is at least 32-bit.