5
我試圖在XCode中6編譯這段代碼:徵:: aligned_allocator失敗的std :: unordered_multimap
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"
是否仍有必要使用aligned_allocator
在Eigen 3.2.2?爲什麼它在C++ 11/C++ 14和libC++中失敗?
編輯:
我得到no type named value_type
如果我從unordered_map
模板聲明刪除徵分配器。
非常感謝!錯誤是完全誤導。這不是我的代碼,它在其他項目中使用,不明白它是如何編譯的?也許GNU編譯器不那麼嚴格? – aledalgrande 2014-12-06 21:52:25
@aledalgrande也許libstdC++不會'static_assert'分配器的值類型必須與容器的值類型相同。 – Columbo 2014-12-06 21:53:29
我明白了。看來Clang/libC++不能原諒C++ 11的結構(從我的小經驗)。 – aledalgrande 2014-12-06 21:56:27