Gibt es eine Möglichkeit, in C ++ 11 zu überprüfen, ob eine Aufzählung fortlaufend ist ?
Es ist voll gültig, eine Aufzählung anzugeben, die nicht sind. Gibt es möglicherweise eine Funktion wie ein Typmerkmal in C ++ 14, C ++ 17 oder C ++ 20, um zu überprüfen, ob die Aufzählung fortlaufend ist? Dies soll in einem static_assert verwendet werden.
Es folgt ein kleines Beispiel:
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
. Leider habe ich einen Tagesjob und kann daher nicht versuchen, dies aufzuschreiben, obwohl ich eine Antwort auf der Grundlage dieses Ansatzes positiv bewerten werde. Ich bin mir ziemlich sicher, dass jemand wie @barry oder @sehe das könnte.
static_assert
)? Auch wenn Sie keine "schöne Lösung" finden können, schreiben Sie bitte trotzdem eine Antwort, da ich sehr gespannt bin, wie dies generisch gemacht werden könnte.