cpp_int に基づく負の boost::multiprecision 数値で export_bits を呼び出すと、内部メソッド 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 数値の内容を抽出するにはどうすればよいですか? Boost のドキュメントによると、export_bits はデータ交換に使用するように設計されているため、サポートされている値をエクスポートできない場合、私の理解では大きな欠陥になります。
バックエンドの手足に直接アクセスすることが回避策になる可能性があることを知りましたが、変更される可能性のある内部にアクセスしています。
更新: 質問をブースト メーリング リストに投稿し、このhttps://svn.boost.org/trac/boost/ticket/12170のチケットを開きました。これは次のリリースで修正される予定です。