順序付けされていないマップでブースト::バリアントが機能する方法を教えてもらえますか?
typedef boost::variant<long, string, double> lut_value;
unordered_map<lut_value, short> table;
boost::variant のハッシュ関数が欠落していると思いますが、そうですか?
コンパイラは次のように述べています。
./src/lookup/HashMap.o: 関数 `std::__detail::_Hash_code_base、std::allocator >、double、boost::detail::variant::void_、boost::detail::variant::void_ 内、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail: :variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、 boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_、boost::detail::variant::void_>、std::pair、std::allocator >、double、boost::detail::variant::void_、boost::detail::variant:: void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost ::detail::variant::void_, boost::detail::variant::void_> const, short>, std::_Select1st, std::allocator >, double, boost::detail::variant::void_, boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost ::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_> const、short> >、std::equal_to、std::allocator >、double、boost::detail ::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_ 、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail: :variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、 boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_> >、std::hash、std::allocator >、double、boost: :detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant:: void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail ::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_hash_code(boost::variant, std::allocator >, double, boost::detail::variant::void_, boost::detail::variant::void_, boost ::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant ::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_,boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> const&) const': /usr/include/c++/4.6/bits/hashtable_policy.h:753: `std::hash, std::allocator >, double, boost::detail::variant::void_, boost::detail への未定義参照: :variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、 boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost ::detail::variant::void_, boost::detail::variant::void_> >::operator()(boost::variant, std::allocator >, double, boost::detail::variant:: void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail ::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_ 、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_>) const' ./src/lookup/HashMap.o: 関数 `std::__detail::_Hash_code_base、std::allocator >、double、boost::detail::variant::void_、boost::detail::variant::void_ 内、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail: :variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、 boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_、boost::detail::variant::void_>、std::pair、std::allocator >、double、boost::detail::variant::void_、boost::detail::variant:: void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost ::detail::variant::void_, boost::detail::variant::void_> const, short>, std::_Select1st, std::allocator >, double, boost::detail::variant::void_, boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost ::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_> const、short> >、std::equal_to、std::allocator >、double、boost::detail ::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_ 、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail: :variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、 boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_> >、std::hash、std::allocator >、double、boost: :detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant:: void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail ::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_bucket_index(std::__detail::_Hash_node, std::allocator >, double, boost::detail::variant::void_, boost::detail::variant:: void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail ::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost ::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> const, short>, false> const*, unsigned long) const': /usr/include/c++/4.6/bits/hashtable_policy.h:763: `std::hash, std::allocator >, double, boost::detail::variant::void_, boost::detail への未定義参照: :variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、 boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail:: variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost ::detail::variant::void_, boost::detail::variant::void_> >::operator()(boost::variant, std::allocator >, double, boost::detail::variant:: void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail ::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_ 、boost::detail::variant::void_、boost::detail::variant::void_、boost::detail::variant::void_>) const'