При вызове export_bits для отрицательного числа boost :: multiprecision на основе cpp_int выдается исключение из внутреннего метода msb («тестирование отдельных битов в отрицательных значениях не поддерживается»). (Повышение 1.60)
boost::multiprecision::checked_int128_t i (-1); // use negative number
std::vector<unsigned char> v;
export_bits(i, std::back_inserter(v), 8); // throws
Как я могу извлечь содержимое номера boost :: multiprecision?
Повысить документацию говорит, что export_bits предназначен для использования для обмена данными, поэтому, насколько я понимаю, это будет серьезным недостатком, если он не сможет экспортировать поддерживаемые значения.
я научился что обходной путь может заключаться в прямом доступе к конечностям бэкэнда, но доступ к внутренним органам может измениться.
Обновить: Я разместил вопрос в рассылке буста, открыл тикет на это https://svn.boost.org/trac/boost/ticket/12170, и это будет исправлено в следующем выпуске.
Задача ещё не решена.
Других решений пока нет …