C'è un modo per verificare in C ++ 11 se un enum è continuo ?
È pienamente valido fornire valori enum che non lo sono. C'è forse una caratteristica come una caratteristica del tipo in C ++ 14, C ++ 17 o forse C ++ 20 per verificare se l'enum è continuo? Questo da usare in un static_assert.
Segue un piccolo esempio:
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
. Purtroppo ho un lavoro diurno, quindi non posso tentare di scriverlo, anche se voterò una risposta basata su questo approccio. Sono abbastanza sicuro che qualcuno come @barry o @sehe potrebbe farlo.
static_assert
)? Anche se non riesci a trovare una "bella soluzione", ti preghiamo di scrivere comunque una risposta poiché sono molto curioso di sapere come si possa fare in modo generico.