我有以下代码:
typedef unsigned char tTerm;
typedef uint64_t nTerm;
boost::unordered_map<tTerm *, nTerm> map;
nTerm function(tTerm * key) {
boost::unordered_map<tTerm *, nTerm>::iterator it = standardTerms.find(key);
if (it != standardTerms.end()) {
return it->second;
}
}
此代码使用 clang(在 MacOs 中)正确编译。但是,eclipse 警告调用 find() 方法的方式存在问题。更具体地说,它会通过返回错误来警告 find() 是使用不兼容的参数调用的:
“无效参数'候选者是: boost::unordered::iterator_detail::iterator>> find(const unsigned char &) boost::unordered::iterator_detail::c_iterator>,const boost::unordered::detail::ptr_node> *> find(const unsigned char &) boost::unordered::iterator_detail::iterator>> find(const #10000 &, const #10001 &, const #10002 &) boost::unordered::iterator_detail::c_iterator>, const boost::unordered::detail::ptr_node> *> find(const #10000 &, const #10001 &, const #10002 &) '"
现在所有代码都可以正确编译,所以它可能是一个 Eclipse 错误。但是,忽略此消息,我可能会遗漏一些重要的东西。你怎么看?