template<typename InputIterator, typename Predicate>
inline InputIterator
find_if(InputIterator first, InputIterator last, Predicate pred, input_iterator_tag)
{
while (first != last && !bool(pred(*first)))
++first;
return first;
}
Я столкнулся с этим фрагментом в исходном коде реализации стандартной библиотеки С++, поставляемой с GCC 4.7.0. Это специализация find_if
для входного итератора. Я очистил ведущие символы подчеркивания, чтобы сделать его более читаемым.
Почему они использовали приведение bool
к предикату?