有没有一种方法可以在C ++ 11中检查枚举是否连续?
给出一个不是的枚举值是完全有效的。在C ++ 14,C ++ 17或C ++ 20中是否可能有类似类型特征的功能来检查枚举是否连续?这将在static_assert中使用。
一个小例子如下:
enum class Types_Discontinuous {
A = 10,
B = 1,
C = 100
};
enum class Types_Continuous {
A = 0,
B = 1,
C = 2
};
static_assert(SOME_TEST<Types_Discontinuous>::value, "Enum should be continuous"); // Fails
static_assert(SOME_TEST<Types_Continuous>::value, "Enum should be continuous"); // Passes
enum
。可悲的是我有一份日常工作,因此尽管我会基于这种方法提高答案,但无法尝试将其写出来。我很确定像@barry或@sehe这样的人可以做到。
static_assert
?即使您不能做出一个“美丽的解决方案”,也请写一个答案,因为我很好奇如何以一种通用的方式来完成它。