Просто для полноты, следующее утверждение неверно!Спасибо Мэтью М. за то, что он указал на мою ошибку!
При разыменовании итератора контейнера указателя буста вы получите чистый указатель на элемент.Таким образом, вы можете попытаться разыменовать чистый указатель, полученный через итератор:
CMDatabase::TryVectorIterator it =
find_if(updateTry.begin(), updateTry.end(), bind1st(mem_fun(&CMDatabase::Try::equal), **i));
Там, где следующее по-прежнему верно;)
Или вы можетеиспользуйте operator[]
реализацию boost::ptr_vector
, которая будет возвращать ссылку на элемент:
for (std::size_t i = 0, l = ; defaultTry.size(); ++i) {
CMDatabase::TryVectorIterator it = std::find_if(
updateTry.begin(),
updateTry.end(),
std::bind1st(std::mem_fun(&CMDatabase::Try::equal), defaultTry[i])
);
}
Надеюсь, это поможет.