一种常见的方法是将MAX添加为最后一个元素,但这并不总是可取的。

还有其他方法吗?我可不可以做

constexpr size_t enum_size = sizeof(EnumClassName) / sizeof(std::underlying_type(EnumClassName)?

这样安全吗?不知道我是否需要担心填充。我的印象是,枚举类不应填充,因为枚举项的大小都相同。假设我只使用uint8_t或uint16_t作为基础类型。

最佳答案

您正在寻找的(或至少是大多数MAX枚举器提供的)最大的实际枚举器值。这与枚举可以存储的最大可能值不同。后者将由std::numeric_limits<typename std::underlying_type<Enumeration>::type>::max()定义。

无法自动获取枚举中的最大枚举器值。好吧,不是自动的。

关于c++ - 在编译时获取枚举类的大小,而无需定义其他元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36800990/

10-11 15:11
查看更多