一种常见的方法是将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/