У меня есть следующий код:
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 (в MacO). Однако 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 без знака) &)
boost :: unordered :: iterator_detail :: iterator >> find (const # 10000 &конст. № 10001 &, const # 10002 &)
boost :: unordered :: iterator_detail :: c_iterator>, const boost :: unordered :: detail :: ptr_node> *> find (const # 10000 &конст. № 10001 &, const # 10002
&) ‘»
Теперь весь код компилируется правильно, так что, возможно, это ошибка затмения. Однако я могу упустить что-то важное, игнорируя это сообщение. Как вы думаете?
Не о чем беспокоиться. Выглядит правильно для меня. Вы можете использовать указатели в качестве ключей. Я думаю, что это вина затмения.
Других решений пока нет …