Нередко алгоритм
std::find используется не для того, чтобы действительно найти некоторый элемент, а только для того, чтобы узнать, есть такой элемент или нет:
if (find(begin, end, value) == end)
То есть подошел бы позволяющий более короткую запись алгоритм
found:
if (found(begin, end, value))
Ни в стандартной библиотеке, ни в Boost'е алгоритма found нет.
Вопросы:
В скольки процентах всех случаев, когда вы используете std::find, подошел бы found?
Определяете ли вы алгоритм found сами?
Если вы определяете found, как вы думаете, почему его нет в Boost'е?
PS. Собственно мое мнение таково: определяя алгоритм возвращающий найденный элемент или конец последовательности в случае, если элемент не был найден, нужно определять соответствующий ему алгоритм возвращающий
true, если элемент существует, и
false в противном случае. Это как, к примеру, перегрузка по
std::string const& и
char const*, хотя аналогия конечно тут непрямая. Но мнение мое не важно, вопросы вверху.