¿Hay alguna manera de verificar en C ++ 11 si una enumeración es continua ?
Es totalmente válido dar valores enum que no lo son. ¿Hay tal vez una característica como un rasgo de tipo en C ++ 14, C ++ 17 o tal vez C ++ 20 para verificar si la enumeración es continua? Esto se utilizará en un static_assert.
Sigue un pequeño ejemplo:
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
. Lamentablemente tengo un trabajo diario, así que no puedo intentar escribir esto, aunque votaré una respuesta basada en este enfoque. Estoy bastante seguro de que alguien como @barry o @sehe podría hacerlo.
static_assert
)? Incluso si no puede hacer una "solución hermosa", escriba una respuesta de todos modos, ya que tengo mucha curiosidad por cómo se podría hacer de manera genérica.