Eigen::aligned_allocator 失败,并显示 std::unordered_multimap

Eigen::aligned_allocator fails with std::unordered_multimap

本文关键字:显示 std unordered multimap 失败 aligned allocator Eigen      更新时间:2023-10-16

我正在尝试在XCode 6中编译此代码:

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

它失败并显示:

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

特征 3.2.2 中是否仍然有必要使用 aligned_allocator?为什么它在 C++11/C++14 和 libc++ 中失败?

编辑

如果我从unordered_map模板声明中删除特征分配器,我会得到no type named value_type

我认为

错误在于指针应该是const,而不是尖头。
即尝试Eigen::aligned_allocator< std::pair<Frame* const, Sim3> >作为分配器类型。