Подтвердить что ты не робот

Что произойдет, если перечисление не может вписаться в интегральный тип?

Я столкнулся с этим вопросом об основных типах перечислений, где ответы цитируют Standard С++ 7.2/5 как:

Основной тип перечисления является интегральным типом, который может представлять все значения перечисления, определенные в перечислении. Определяется реализация, который является интегральным типом в качестве базового типа для перечисления, за исключением того, что базовый тип не должен быть больше, чем int, если значение enumerator не может быть помещено в int или unsigned int.

Это довольно ясно для всех разумных случаев. Но что произойдет, если я сделаю enum настолько смехотворно большим, что он не может даже долго вписываться?

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

Является ли это поведение определенным стандартом?

4b9b3361

Ответ 1

Поведение

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

и аналогичный undefined.

Я немного обманул, заставив тип int, но то же самое относится к самому большому интегральному типу, доступному на вашей платформе.