如果枚举不能装入整型,会发生什么情况?

What happens if an enum cannot fit into an integral type?

本文关键字:什么情况 枚举 不能 装入 整型 如果      更新时间:2023-10-16

我遇到了这个关于枚举的底层类型的问题,其中一个答案引用了标准c++ 7.2/5:

枚举的基础类型是一个整型,可以表示枚举中定义的所有枚举数值。整数类型作为枚举的基础类型是由实现定义的,除非枚举数的值不能装入int或unsigned int类型,否则基础类型不能大于int。

这对于所有合理的情况都是非常清楚的。但是,如果我把枚举设置得如此之大,以至于它甚至不能放入一个long long中,会发生什么?

(我不知道为什么这种情况会在实践中发生,但也许我感觉破坏性和有一个自由的下午)

这个行为是由标准定义的吗?

enum foo : int
{
    bar = INT_MAX,
    oops
};

和类似的undefined

我在这里欺骗了一点,强制类型为int,但这同样适用于您的平台上可用的最大整型。