未初始化枚举器的默认值

5
假设我们有以下声明:
enum visibility
{
   On  = 0,
   Off = 1,
   maxVisibility
};

在C++11/C++0x标准中,maxVisibility枚举器的保证值是2吗?

1
我还建议您使用强类型枚举:enum class visibility { ... },因为您可以使用c++11的特性。 - SingerOfTheFall
顺便说一下,“C++0x”不是一个标准,它是在成为标准之前对“C++11”的非官方称呼。但我只是在挑刺。 - Christian Rau
@ChristianRau C++11是一个同样非官方的名称... 它只是比ISO/IEC 14882:2011更容易打字和记忆。 - Lundin
1
@Lundin 嗯,确实如此。如果我无法承担完美精确性所带来的责任,那么我应该真正停止挑剔琐事。;-) - Christian Rau
1个回答

8

是的,这是有保证的。

第 7.2.2 节

如果第一个枚举值没有初始化器,则相应常量的值为零。没有初始化器的枚举定义将使枚举器的值增加前一个枚举器的值而得到的值


1
所以你甚至可以省略明确的 01 - Christian Rau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接