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.