Какова функция спецификатора const в типах enum? - PullRequest
28 голосов
/ 30 июня 2019
enum foo : const unsigned int
{
    F,
    S,
    T
};

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

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

1 Ответ

30 голосов
/ 30 июня 2019

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

(выделение мое)

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

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

(выделение мое)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...