enum foo : const unsigned int
{
F,
S,
T
};
void func()
{
foo p;
p = F;
}
Вышеприведенное компилируется, поэтому базовый тип не является константным типом?





Квалификатор const игнорируется в спецификации enum-база; который просто ожидает, что целочисленный тип будет использоваться в качестве базового типа типа перечисления, указание const (или volatile) не имеет особого смысла.
(выделено мной)
colon (:), followed by a type-specifier-seq that names an integral type (if it is cv-qualified, qualifications are ignored) that will serve as the fixed underlying type for this enumeration type
Из стандарта [dcl.enum]/2:
(выделено мной)
The type-specifier-seq of an enum-base shall name an integral type; any cv-qualification is ignored.