Unordered_map声明对NDK(铛)抛出错误,对gcc很好用

我正在尝试在Android上运行C ++项目。以下语句出现在一个源文件中(一个大项目的一部分)。

std::unordered_map  <int,std::shared_ptr<Frame>,std::hash<int>,std::equal_to<int>,Eigen::aligned_allocator< std::pair<const int,std::shared_ptr<Frame> > > > idToKeyFrame;

NDK版本抱怨以下

sysroot/usr/include/c++/v1/unordered_map:1684:5: error: static_assert failed due to requirement 'is_same<value_type,typename allocator_type::value_type>::value' "Invalid allocator::value_type"

我无法发现声明的哪个部分不兼容。请帮助解决此错误。

cplusplus.com reference

更新

当我将分配器(如Marc的注释中所建议)修改为Eigen::aligned_allocator<std::pair<int,std::shared_ptr<Frame>>>时,错误消息保持不变,但行号却发生了更改

sysroot/usr/include/c++/v1/unordered_map:854:5: error: static_assert failed due to requirement 'is_same<value_type,typename allocator_type::value_type>::value' "Invalid allocator::value_type"

更新++

根据this answer

  

libstdc ++不会static_assert,libstdc ++会忽略分配器的确切类型,并将其重新绑定到容器的值类型。

  

Clang / libc ++不能原谅

又一次更新

通过注释源unordered_map中的行,我可以解决该错误。这是目前的度假胜地(直到找到解决方案为止)。

yxsyg 回答:Unordered_map声明对NDK(铛)抛出错误,对gcc很好用

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3067914.html

大家都在问