在C++11中,有没有一种方法可以检查枚举类型是否为连续的?
给一个枚举类型赋非连续值是完全有效的。在C++14、C++17或者C++20中,是否有像类型特性这样的功能来检查枚举类型是否连续?这可以用于静态断言。
以下是一个小例子:
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这样的人可以做到。 - Bathshebastatic_assert
是必需的)?即使你不能提供一个“漂亮的解决方案”,也请写下答案,因为我非常好奇它如何以一种通用的方式完成。 - Some programmer dude