boost :: multiprecision :: export_bits создает отрицательное число cpp_int

При вызове 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, и это будет исправлено в следующем выпуске.

http://www.boost.org/doc/libs/master/libs/multiprecision/doc/html/boost_multiprecision/tut/import_export.html

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …