Чи є спосіб перевірити в C ++ 11, якщо перерахунок є безперервним ?
Цілком справедливо давати значення перерахунків, яких немає. Чи може бути така функція, як ознака типу в C ++ 14, C ++ 17 або, можливо, C ++ 20, щоб перевірити, чи перераховується перерахунок? Це потрібно використовувати в 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
)? Навіть якщо ви не можете зробити "красиве рішення", будь-ласка, напишіть відповідь все одно, оскільки мені дуже цікаво, як це можна зробити загальним способом.