Я регулярно использую типы из cstdint (например, uint32_t) в своем коде, но теперь они не совсем соответствуют моим потребностям, особенно в отношении шаблонов.
Есть ли способ указать целочисленный тип, который в два раза больше аргумента шаблона? Когда моему шаблону передается uint32_t, мне нужно создать uint64_t для одной переменной внутри функции. Возможно, еще сложнее, когда передается uint64_t, мне нужно создать uint128_t. Я мог бы сделать это с массивом из двух аргументов шаблона, но тогда я не могу передать этот массив другим функциям шаблона. Это критический раздел производительности (я занимаюсь криптографией).
В связи с этим, есть ли какой-нибудь другой заголовок, который я могу включить (в порядке предпочтения: стандарт, повышение, прочее), который дает мне 128-битные целые числа? Похоже, что этот вопрос отвечает именно этой части: Самая быстрая 128-битная целочисленная библиотека
Есть ли способ указать, что я хочу использовать наибольшее доступное целое число, которое не превышает определенный размер? Этот максимальный размер также будет функцией sizeof (T).