Existe-t-il un moyen de vérifier en C ++ 11 si une énumération est continue ?
Il est tout à fait valide de donner des valeurs d'énumération qui ne le sont pas. Existe-t-il peut-être une fonctionnalité comme un trait de type en C ++ 14, C ++ 17 ou peut-être C ++ 20 pour vérifier si l'énumération est continue? À utiliser dans un static_assert.
Un petit exemple suit:
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
. Malheureusement, j'ai un travail de jour, je ne peux donc pas essayer de l'écrire, même si je vais voter pour une réponse basée sur cette approche. Je suis sûr que quelqu'un comme @barry ou @sehe pourrait le faire.
static_assert
)? Même si vous ne pouvez pas faire une "belle solution", veuillez quand même écrire une réponse car je suis très curieux de savoir comment cela pourrait être fait de manière générique.