c++ - Какова функция спецификатора const в типах enum?



c++11 enums (1)

Спецификатор const игнорируется в спецификации enum-base ; который просто ожидает, что интегральный тип будет использоваться в качестве базового типа перечислимого типа, указание const (или volatile ) не имеет особого смысла.

(акцент мой)

двоеточие (:), за которым следует спецификатор типа-seq, который называет целочисленный тип ( если он квалифицирован cv, квалификации игнорируются ), который будет служить фиксированным базовым типом для этого типа перечисления

Из стандарта [dcl.enum]/2 :

(акцент мой)

type-specifier-seq enum-base должен называть целочисленный тип; любая квалификация cv игнорируется .

enum foo : const unsigned int
{
    F,
    S,
    T
};

void func()
{
    foo p;
    p = F;
}

Выше компилируется, поэтому базовый тип не является константным типом?





language-lawyer