C++ Eigen::aligned_分配器因std::unordered_多重映射失败

C++ Eigen::aligned_分配器因std::unordered_多重映射失败,c++,c++11,eigen,C++,C++11,Eigen,我试图在XCode 6中编译此代码: std::unordered_multimap< Frame*, Sim3, std::hash<Frame*>, std::equal_to<Frame*>, Eigen::aligned_allocator< std::pair<const Frame*,Sim3> > > trackingFailed; 是否仍有必要在Eigen 3.2.2中使用对齐的分配器?为什么C++11/C++14和l

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

std::unordered_multimap< Frame*, Sim3, std::hash<Frame*>, std::equal_to<Frame*>, Eigen::aligned_allocator< std::pair<const Frame*,Sim3> > > trackingFailed;
是否仍有必要在Eigen 3.2.2中使用对齐的分配器?为什么C++11/C++14和libc++会失败

编辑


如果我从
无序映射
模板声明中删除本征分配器,我就不会得到名为value\u type的
类型。

我认为错误在于指针应该是
常量
,而不是指针对象
也就是说,尝试使用
Eigen::aligned\u分配器
作为分配器类型。

非常感谢!这个错误完全是误导。这不是我的代码,它曾在其他项目中使用过,不明白它是如何为他们编译的吗?也许GNU编译器没有那么严格?@aledalgrande也许libstdc++没有
static\u断言分配器的值类型必须与容器的值类型相同。我明白了。似乎Clang/libc++对C++11构造(根据我的一点经验)并不宽容。@Columbo,对,libstdc++允许例如
vector
,并将分配器重新绑定到正确的类型。我讨厌这个扩展,我想反对它!找到另一个:
std::vector
我真的不知道它是如何编译的,这两个结构是完全分开的。
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/unordered_map:1461:5: Static_assert failed "Invalid allocator::value_type"