Я заметил, что бэкенд библиотеки cpp_int библиотеки Boost.Multiprecion использует 32-разрядное целое число без знака в качестве слова (лимба) в 64-разрядной архитектуре. Требование для использования 64-битного слова — наличие встроенного 128-битного целого числа в компиляторе (что может быть подсказкой). Это почему?
Подробнее о «подсказке». limb_type
определяется как detail::largest_unsigned_type<32>::type
для компиляторов без встроенной поддержки 128-битного целого в файле boost/multiprecision/cpp_int/cpp_int_config.hpp
, Существует также тип под названием double_limb_type
,
Задача ещё не решена.