Почему объявление enum должно быть отмечено const?

Я видел эту конструкцию в проекте, в котором я работаю:

const enum SomeEnum
{
    val0,
    val1,
    val2
};

Какова цель const здесь?

Ответ 1

Ничего. На самом деле, согласно g++, это ошибка компилятора:

error: qualifiers can only be specified for objects and functions

Однако, в C разрешено, но бесполезно. GCC говорит:

warning: useless type qualifier in empty declaration

Проблема заключается в том, что const применяется только к объектам (переменным) и функциям-членам, но не к базовым типам.

Ответ 2

Это не влияет на ваш код, но в этом случае:

const enum SomeEnum
{
    val0,
    val1,
    val2
} VAL0 = val0;

Здесь VAL0 будет переменной const (со значением VAL0). TBH, хотя, это не очень полезно.