Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eigen::aligned_allocator fails with std::unordered_multimap

Tags:

c++

c++11

eigen

I am trying to compile this code in XCode 6:

std::unordered_multimap< Frame*, Sim3, std::hash<Frame*>, std::equal_to<Frame*>, Eigen::aligned_allocator< std::pair<const Frame*,Sim3> > > trackingFailed;

It fails with:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/unordered_map:1461:5: Static_assert failed "Invalid allocator::value_type"

Is it still necessary to use aligned_allocator in Eigen 3.2.2? Why is it failing with C++11/C++14 and libc++?

EDIT:

I get no type named value_type if I remove the Eigen allocator from the unordered_map template declaration.

like image 737
aledalgrande Avatar asked Dec 06 '14 21:12

aledalgrande


1 Answers

I believe the mistake is that the pointer should be const, not the pointee.
I.e. try Eigen::aligned_allocator< std::pair<Frame* const, Sim3> > as the allocator type.

like image 150
Columbo Avatar answered Oct 10 '22 05:10

Columbo