C++ 以编程方式独立于枚举元素的值推断枚举的大小?

C++ 以编程方式独立于枚举元素的值推断枚举的大小?,c++,c++11,enums,C++,C++11,Enums,是否有任何方法(可能需要C++11/14)来推断枚举中的元素数,而不考虑枚举元素本身的值 考虑一个枚举,如 enum{Val1=1,Val2=2,Val3=4} 答案是3。我知道这里有一条皱纹,我可以在那里看到,例如,Val3=Val1,但在我的用例中可以忽略这一点 我在这里和其他地方都看到了很多类似的问题,但我还没有找到一个合适的答案。如果有的话 通常,建议的解决方案是引入最后一个元素,但这只会给我下一个更高的enum值(使用上面的示例,即5),这对我没有用处 如果有的话 没有 即使使用新的C

是否有任何方法(可能需要C++11/14)来推断枚举中的元素数,而不考虑枚举元素本身的值

考虑一个枚举,如

enum{Val1=1,Val2=2,Val3=4}

答案是3。我知道这里有一条皱纹,我可以在那里看到,例如,
Val3=Val1
,但在我的用例中可以忽略这一点

我在这里和其他地方都看到了很多类似的问题,但我还没有找到一个合适的答案。如果有的话

通常,建议的解决方案是引入最后一个元素,但这只会给我下一个更高的enum值(使用上面的示例,即5),这对我没有用处

如果有的话

没有

即使使用新的C++17,我所知道的方案中也没有一个能让您实现这一点

通常,建议的解决方案是引入最后一个元素,但这只会给我下一个更高的enum值(使用上面的示例,即5),这对我没有用处


然后,您必须重新分析您的问题。

否。即使在C++17中,这也是不可能的。对于这些特性,需要编译时反射/内省。在核心语言中出现之前,等等,纳瓦兹说了什么。今天您所能做的最好的事情就是获取底层类型,从而得到一个非常不精确的上限。哇!太快了,伙计们。:-)是的,我担心这是不可能的,但我想我还是应该问问这里的知识渊博的人。一些库(as)使用宏来声明/定义枚举,然后可以对自定义枚举提供一些反映。