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 1.56 で追加されたシリアライゼーション サポートを使用boost::multiprecision
しています (少なくともドキュメント@1.55と@1.56の違いによると) 。
また、その質問では、シリアライゼーションのサポートなしでこの問題を解決するために言及された他のアプローチはありませんでしたboost::multiprecision
。