2014-12-06 4 views
5

unordered_multimap와 함께 실패아이겐 :: aligned_allocator는 표준 : 내가 엑스 코드 (6)이 코드를 컴파일하려고

/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을 사용하는 것이 여전히 필요가 :

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

그것은 실패 아이겐 3.2.2? C++ 11/C++ 14 및 libC++에서 왜 실패합니까?

편집 : 나는이 unordered_map 템플릿 선언에서 아이겐 할당을 제거하면

나는 no type named value_type를 얻을.

답변

8

나는 포인터가 const이 아니라 뾰족한 것이어야한다고 생각합니다.
I. 할당 자 유형으로 Eigen::aligned_allocator< std::pair<Frame* const, Sim3> >을 시도하십시오.

+0

고맙습니다. 오류는 완전히 잘못된 것입니다. 이것은 내 코드가 아니며 다른 프로젝트에서 사용되었습니다. 어떻게 컴파일했는지 이해하지 못합니까? 어쩌면 GNU 컴파일러가 덜 엄격할까요? – aledalgrande

+1

@aledalgrande 아마도 libstdC++는 할당 자의 값 유형이 컨테이너의 값 유형과 같아야한다는 것을'static_assert'하지 않습니다. – Columbo

+0

나는 본다. Clang/libC++는 (나의 작은 경험에서) C++ 11 구조에 대해 용서하지 않는 것 같습니다. – aledalgrande

관련 문제