В библиотеке Boost есть набор средств для выбора типов. Например, можно выбрать наименьший тип с не менее чем N бит:
typedef boost::int_t<N>::least my_int_t;Или тип, который точно сможет уместить в себя все числа в диапазоне от 0 до V:
typedef boost::int_max_value_t<V>::last my_int_t;Или ещё целый беззнаковый тип, который может работать с числами от 0 до V и, при этом, самый быстрый на данной платформе:
typedef boost::uint_value_t<V>::fast my_uint_t;
Полный список можно посмотреть в документации.