However, the algorithm requires a unary predicate, which gets the value passed as fourth argument
to search_n() as second parameter.
Unfortunately, nobody noticed this inconsistency when these new algorithms were introduced to
the C++98 standard (they were not part of the original STL). At first, it seemed that the version with
four arguments is more convenient because you could implement something like