диапазона значений?
Т. е. такая структурка:
template<unsigned char version> struct AmountBits;
Сейчас оно сделано как-то вот так:
template<>
struct AmountBits<1> { constexpr static unsigned int value = 10; };
...
template<>
struct AmountBits<n> { constexpr static unsigned int value = 10; };
template<>
struct AmountBits<n + 1> { constexpr static unsigned int value = 20; };
...
template<>
struct AmountBits<m> { constexpr static unsigned int value = 20; };
Как-то так могу специализировать?
template<>
struct AmountBits<1 : n> { constexpr static unsigned int value = 10; };
template<>
struct AmountBits<n + 1 : m> { constexpr static unsigned int value = 10; };
ну типо sfinae какое то проверяющее диапазон
я не дописал к тому моменту
Нет
Если тебе надо диапазоны проверять - тебе надо писать функцию
просто это по факту количество бит на символ в зависимости от версии и режима, я хотел таким образом их растащить по типам и в компайл-тайме проверять то, что параметры верные
а что мешает, скажем, написать constexpr функцию?
ничего, просто не хотелось её вытаскивать в неймспейс грубо говоря - есть кодировщики, специализированные под режимы, есть версии для режима, для каждой версии режима свое количество бит как метод кодировщика делать получение количества бит выглядит странно, как функцию вытаскивать не хотелось, так как кроме кодировщика никто этой функцией не воспользуется и чего она там лежать тогда будет но в текущем варианте только функция и остается, слишком много копипаста
а можешь задачу расписать? тебе надо условно версию на кодировщик замапить? и версия компильтайм константа?
йоп. Есть данные, от них режим кодирования (все режимы компайлтаймовые и алгоритм отличается). (побайтовый, цифры, цифробуквы) Для каждого режима кодирования есть версии, в зависимости от того, в каком диапазоне версия, зависит количество бит. Все компильтайм, все известно на этапе сборки. Ну т.е., например, (Numeric, 1) -> 10, (Numeric, 9) -> 10, (Numeric, 10) -> 12
ну вот я выше расписал, делаешь перегруженную функцию, передаёшь version_tag<N> параметром, вызовом получаешь класс кодировщик, его свойства в нём лежат
Обсуждают сегодня