首页 > 解决方案 > 枚举类型中 const 说明符的作用是什么?

问题描述

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

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

上面的编译所以底层类型不是 const 类型?

标签: c++c++11enumsconstantslanguage-lawyer

解决方案


const限定符在enum-base的规范中被忽略;它只是期望将整数类型用作枚举类型的基础类型,指定const(or volatile) 没有多大意义。

(强调我的)

冒号 (:),后跟一个类型说明符序列,用于命名一个整数类型(如果它是 cv 限定的,则忽略限定),它将用作此枚举类型的固定基础类型

根据标准,[dcl.enum]/2

(强调我的)

enum-basetype-specifier-seq应命名为整数类型;忽略任何 cv 限定


推荐阅读