Existe uma maneira de verificar no C ++ 11 se uma enumeração é contínua ?
É totalmente válido fornecer valores de enumeração que não são. Existe talvez um recurso como um traço de tipo em C ++ 14, C ++ 17 ou C ++ 20 para verificar se o enum é contínuo? Isso deve ser usado em um static_assert.
Um pequeno exemplo a seguir:
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. Infelizmente, eu tenho um emprego diário, por isso não posso tentar escrever isso, apesar de aprovar uma resposta com base nessa abordagem. Tenho certeza de que alguém como @barry ou @sehe poderia fazê-lo.
static_assert)? Mesmo que você não consiga criar uma "solução bonita", escreva uma resposta de qualquer maneira, pois estou muito curioso para saber como isso pode ser feito de maneira genérica.