enum整数值的赋值规则是什么?

jav*_*ver 3 c++ enums language-lawyer c++11

假设我这样编码:

enum State{
    State0,                //=0
    State1,                //=1
    State2,                //=2
    State5 = State2+3,     //=5
    State6 = State5+1,     //=6
    StateSize = State6+1   //=7
};
Run Code Online (Sandbox Code Playgroud)

我在多大程度上可以信赖这个事实(例如StateSize==7)?

更具体地说,确定它们的值的 C++ 法则/规则是什么?

我觉得SO中可能有一个关于这个的问题,但我找不到它。

SU3*_*SU3 6

引用自cppreference.com

如果第一个枚举器没有初始值设定项,则关联值为零。对于其定义没有初始值设定项的任何其他枚举数,关联的值是前一个枚举数的值加一。