170 похожих чатов

Доброе утро. Такой вопрос - я могу как-то специализировать шаблон для

диапазона значений?

Т. е. такая структурка:

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; };

11 ответов

34 просмотра

ну типо sfinae какое то проверяющее диапазон

смкх- Автор вопроса

Нет

смкх- Автор вопроса

Если тебе надо диапазоны проверять - тебе надо писать функцию

смкх- Автор вопроса
Constantine Drozdov
Если тебе надо диапазоны проверять - тебе надо пис...

просто это по факту количество бит на символ в зависимости от версии и режима, я хотел таким образом их растащить по типам и в компайл-тайме проверять то, что параметры верные

смкх
просто это по факту количество бит на символ в зав...

а что мешает, скажем, написать constexpr функцию?

смкх- Автор вопроса
Constantine Drozdov
а что мешает, скажем, написать constexpr функцию?

ничего, просто не хотелось её вытаскивать в неймспейс грубо говоря - есть кодировщики, специализированные под режимы, есть версии для режима, для каждой версии режима свое количество бит как метод кодировщика делать получение количества бит выглядит странно, как функцию вытаскивать не хотелось, так как кроме кодировщика никто этой функцией не воспользуется и чего она там лежать тогда будет но в текущем варианте только функция и остается, слишком много копипаста

смкх
ничего, просто не хотелось её вытаскивать в неймсп...

а можешь задачу расписать? тебе надо условно версию на кодировщик замапить? и версия компильтайм константа?

смкх- Автор вопроса
Constantine Drozdov
а можешь задачу расписать? тебе надо условно верси...

йоп. Есть данные, от них режим кодирования (все режимы компайлтаймовые и алгоритм отличается). (побайтовый, цифры, цифробуквы) Для каждого режима кодирования есть версии, в зависимости от того, в каком диапазоне версия, зависит количество бит. Все компильтайм, все известно на этапе сборки. Ну т.е., например, (Numeric, 1) -> 10, (Numeric, 9) -> 10, (Numeric, 10) -> 12

смкх
йоп. Есть данные, от них режим кодирования (все р...

ну вот я выше расписал, делаешь перегруженную функцию, передаёшь version_tag<N> параметром, вызовом получаешь класс кодировщик, его свойства в нём лежат

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта