Czy istnieje sposób sprawdzenia w C ++ 11, czy wyliczenie jest ciągłe ?
W pełni uzasadnione jest podawanie wartości wyliczeniowych, które nie są. Czy w C ++ 14, C ++ 17 jest jakaś cecha typu, a może C ++ 20, aby sprawdzić, czy wyliczanie jest ciągłe? Należy tego użyć w static_assert.
Oto mały przykład:
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
. Niestety mam dzienną pracę, więc nie mogę spróbować tego napisać, chociaż głosuję za odpowiedzią w oparciu o to podejście. Jestem prawie pewien, że ktoś taki jak @barry lub @sehe mógłby to zrobić.
static_assert
)? Nawet jeśli nie możesz stworzyć „pięknego rozwiązania”, napisz odpowiedź, ponieważ jestem bardzo ciekawy, jak można to zrobić w sposób ogólny.