Классический C++ иногда выбирает суффикс _if для алгоритмов предикатов (а не для тех, которые принимают значение), например find_if/find count_if/count а иногда и нет (например, Any_of не имеет суффикса _if, хотя он принимает предикат, и не существует версии алгоритма со значением Any_of).
Насколько я вижу, фильтр C++20 или диапазоны::any_of не имеют перегрузки значений.
Я просмотрел всю страницу cppreference для C++20 и ничего не нашел, я предполагаю, что это произошло просто потому, что библиотека диапазонов C++20 весьма ограничена (всего несколько представлений) и соответствует существующей функциональности (в случае Any_of).
Моя лучшая попытка — просто обернуть логику и дать ей новое имя.
template
static bool contains(const Range& range, const Value& value)
{
return std::ranges::find(range, value) != range.end();
}
Подробнее здесь: https://stackoverflow.com/questions/676 ... -or-any-of