Throughout this Clause, the names of template parameters are used to express type requirements.
If a parameter is Predicate, operator() applied to the actual template argument shall return a value that is convertible to bool.