std :: function em vez de modelos para predicados

Muitos algoritmos de biblioteca padrão aceitam funções predicadas. No entanto, o tipo desses predicados é um parâmetro de modelo arbitrário fornecido pelo usuário. Por que o C ++ 11 não especifica que eles tenham um tipo específico, comostd::function em vez de? Por exemplo:

template< class InputIt >
InputIt find_if( InputIt first, InputIt last,
             std::function<bool()> p );

Não está usando isso em vez de um modelo como tipo de argumento não muito mais limpo?

questionAnswers(3)

yourAnswerToTheQuestion