我正在尝试使用例如类型创建一个STL
(或boost
)unordered_map
,但在尝试将元素插入此容器后抛出错误。boost::mulprecision
cpp_int
gcc
#include <boost/multiprecision/cpp_int.hpp>
#include <boost/unordered_map.hpp>
using namespace boost::multiprecision;
int main()
{
cpp_int z(123123123);
cpp_int x(123123123);
boost::unordered_map<cpp_int, cpp_int> data;
// line below will throw compilation errors
//data.insert(std::make_pair(z,x));
return 0;
}
完整的错误日志在这里
第一个错误:
In file included from /usr/include/boost/functional/hash/hash.hpp:529:0,
from /usr/include/boost/functional/hash.hpp:6,
from /usr/include/boost/unordered/unordered_map.hpp:20,
from /usr/include/boost/unordered_map.hpp:16,
from main.cpp:2:
/usr/include/boost/functional/hash/extensions.hpp: In instantiation of
........
main.cpp:13:34: required from here
/usr/include/boost/functional/hash/extensions.hpp:269:34: error: no matching function for call to ‘hash_value(const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<> >&)’
return hash_value(val);
^
关于的多精度类型, STL
/boost
容器的使用是否有限制?boost
我正在使用提升 1.54。
编辑:
这可能是重复使用的问题boost::multiprecision
是在 boost 1.56 中添加的序列化支持(至少根据文档@1.55和@1.56的差异。
此外,在那个问题中,没有提到在没有序列化支持的情况下解决此问题的其他方法boost::multiprecision
。