What does this colon do in an enum declaration?

This is a Microsoft extension that lets you choose the base type of the enum values. For example, this lets you specify that values are unsigned (Microsoft's compilers usually choose signed by default) or that they only occupy 8 or 16 bits (Microsoft normally defaults to 32 bits).

The syntax is documented here: http://msdn.microsoft.com/en-us/library/2dzy4k6e(v=VS.100).aspx but I'm not able to find official documentation of what it actually does.

C++11 adds a similar feature, but with slightly different syntax. In C++11 you'd write it like this:

enum MyEnum : size_type { .. values .. };

In C++0x, you can specify the underlying type for the enum. In this case, it will be size_type.

(And it may be supported as an extension in other places prior to C++0x, obviously.)

Tags:

C++

Enums