enum foo : const unsigned int { F, S, T }; void func() { foo p; p = F; }
Выше компилируется, поэтому базовый тип не является константным типом?
Спецификатор const игнорируется в спецификации enum-base ;который просто ожидает, что интегральный тип будет использоваться как базовый тип типа перечисления, указание const (или volatile) не имеет особого смысла.
const
volatile
(выделение мое)
двоеточие (:), за которым следует спецификатор типа-seq, который называет целочисленный тип (, если он квалифицирован cv, квалификации игнорируются ), который будет служить фиксированным базовым типом для этоготип перечисления
из стандарта [dcl.enum] / 2 :
спецификатор типа-seq из enum-base должен называть целочисленный тип; любая квалификация cv игнорируется .