在基于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 documentation说,export_bits旨在用于数据交换,因此根据我的理解,如果它无法导出支持的值,那将是一个重大缺陷。
我learnt解决方法可能是直接访问后端的肢体,但它正在访问可能会发生变化的内部。
更新:我在boost邮件列表上发布了这个问题,为此https://svn.boost.org/trac/boost/ticket/12170打开了一张票,它将在即将发布的版本中修复。