[eigen] Compile bug: aligned_allocator, gcc 4.8.2 |
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
Hello all, I recently switched to the newest dev version 3.2.90 and the following compile bug (only under gcc 4.8.2, 4.9 compiles fine ) arised: This code worked before or did I use something incorrectly up to now? Thanks a lot for the insight! ===================================== #include <Eigen/Dense> class A{ public: A(){} }; template<typename Key, typename Type, typename Hash = std::hash<Key>, typename Pred = std::equal_to<Key> > using StdUMapAligned = std::unordered_map<Key, Type, Hash, Pred, Eigen::aligned_allocator<std::pair<const Key, Type> > >; int main(){ StdUMapAligned<unsigned int , A > a; unsigned int i = 0; auto & r = a[i]; /* compile error Eigen::aligned_allocator<T>::construct(Eigen::aligned_allocator<T>::pointer, const T&) NOT MATCHED */ } ===================================== error: /usr/include/c++/4.8/bits/hashtable.h||In instantiation of 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::__node_type* std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::_M_allocate_node(_Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple<const unsigned int&>, std::tuple<>}; _Key = unsigned int; _Value = std::pair<const unsigned int, A>; _Alloc = Eigen::aligned_allocator<std::pair<const unsigned int, A> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<unsigned int>; _H1 = std::hash<unsigned int>; _H2 = std::__detail::_Mod_range_hashing; _Hash = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits<false, false, true>; std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::__node_type = std::__detail::_Hash_node<std::pair<const unsigned int, A>, false>]':| /usr/include/c++/4.8/bits/hashtable_policy.h|493|required from 'std::__detail::_Map_base<_Key, _Pair, _Alloc, std::__detail::_Select1st, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits, true>::mapped_type& std::__detail::_Map_base<_Key, _Pair, _Alloc, std::__detail::_Select1st, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits, true>::operator[](const key_type&) [with _Key = unsigned int; _Pair = std::pair<const unsigned int, A>; _Alloc = Eigen::aligned_allocator<std::pair<const unsigned int, A> >; _Equal = std::equal_to<unsigned int>; _H1 = std::hash<unsigned int>; _H2 = std::__detail::_Mod_range_hashing; _Hash = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits<false, false, true>; std::__detail::_Map_base<_Key, _Pair, _Alloc, std::__detail::_Select1st, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits, true>::mapped_type = A; std::__detail::_Map_base<_Key, _Pair, _Alloc, std::__detail::_Select1st, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits, true>::key_type = unsigned int]'| /usr/include/c++/4.8/bits/unordered_map.h|596|required from 'std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::mapped_type& std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = A; _Hash = std::hash<unsigned int>; _Pred = std::equal_to<unsigned int>; _Alloc = Eigen::aligned_allocator<std::pair<const unsigned int, A> >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::mapped_type = A; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::key_type = unsigned int]'| main.cpp|108|required from here| /usr/include/c++/4.8/bits/hashtable.h|727|error: no matching function for call to 'Eigen::aligned_allocator<std::__detail::_Hash_node<std::pair<const unsigned int, A>, false> >::construct(std::_Hashtable<unsigned int, std::pair<const unsigned int, A>, Eigen::aligned_allocator<std::pair<const unsigned int, A> >, std::__detail::_Select1st, std::equal_to<unsigned int>, std::hash<unsigned int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::__node_type*&, const std::piecewise_construct_t&, std::tuple<const unsigned int&>, std::tuple<>)'| /usr/include/c++/4.8/bits/hashtable.h|727|note: candidate is:| /usr/local/include/eigen3/Eigen/src/Core/util/Memory.h|729|note: void Eigen::aligned_allocator<T>::construct(Eigen::aligned_allocator<T>::pointer, const T&) [with T = std::__detail::_Hash_node<std::pair<const unsigned int, A>, false>; Eigen::aligned_allocator<T>::pointer = std::__detail::_Hash_node<std::pair<const unsigned int, A>, false>*]| /usr/local/include/eigen3/Eigen/src/Core/util/Memory.h|729|note: candidate expects 2 arguments, 4 provided| ||=== Build failed: 1 error(s), 4 warning(s) (0 minute(s), 3 second(s)) ===| |
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |