Есть ли способ проверить в C ++ 11, является ли перечисление непрерывным ?
Полностью допустимо указывать значения enum, которых нет. Есть ли такая особенность, как черта типа в C ++ 14, C ++ 17 или, может быть, C ++ 20, чтобы проверить, является ли enum непрерывным? Это будет использоваться в static_assert.
Вот небольшой пример:
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
. К сожалению, у меня есть дневная работа, поэтому я не могу попытаться выписать это, хотя я буду приветствовать ответ, основанный на этом подходе. Я уверен, что кто-то вроде @barry или @sehe может это сделать.
static_assert
)? Даже если вы не можете принять «красивое решение», пожалуйста, напишите ответ, так как мне очень любопытно, как это можно сделать в общем виде.