列挙型が連続しているかどうかを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
。悲しいことに、私は1日の仕事をしているので、これを書き出そうとすることはできませんが、このアプローチに基づいて回答を賛成します。@barryや@seheのような誰かができると確信しています。
static_assert
)?「美しい解決策」を作成できない場合でも、一般的な方法でそれがどのように行われるのか非常に興味があるので、とにかく答えを書いてください。