首先,我想说,根据 cppreference.com,对枚举进行值初始化有点不可能。
根据http://en.cppreference.com/w/cpp/language/value_initialization,值初始化枚举实际上执行零初始化。然后,根据http://en.cppreference.com/w/cpp/language/zero_initialization,对枚举进行零初始化的效果是:
如果
T
是标量类型,则对象的初始值是整数常量零隐式转换为T
。
但是,整数常量 0 不能隐式转换为枚举。最终,枚举不能进行值初始化。这听起来很奇怪,并且值初始化枚举确实适用于 VC、GCC 和 clang。那么,标准对此有何评论?
其次,根据http://en.cppreference.com/w/cpp/language/static_cast:
整数、浮点或枚举类型可以转换为任何完整的枚举类型(结果未指定(C++17 前)未定义行为(C++17 起)如果表达式的值,转换为枚举的基础类型, 不是目标枚举值之一)
0
那么,这是否意味着如果目标枚举没有一个等于