Definition of Enumerator Constants

Enumerators are considered defined immediately after their initializers; therefore, they can be used to initialize succeeding enumerators. The following example defines an enumerated type that ensures that any two enumerators can be combined with the OR operator:

enum FileOpenFlags
{
    OpenReadOnly  = 1,
    OpenReadWrite = OpenReadOnly  << 1,
    OpenBinary    = OpenReadWrite << 1,
    OpenText      = OpenBinary    << 1,
    OpenShareable = OpenText      << 1
};

In this example, the preceding enumerator initializes each succeeding enumerator.