std :: function en lugar de plantillas para predicados

Muchos algoritmos de biblioteca estándar toman funciones de predicado. Sin embargo, el tipo de estos predicados es un parámetro de plantilla proporcionado por el usuario de forma arbitraria. ¿Por qué no C ++ 11 especifica que estos toman un tipo específico, comostd::function ¿en lugar? Por ejemplo:

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

¿No está utilizando esto en lugar de una plantilla como tipo de argumento no mucho más limpio?

Respuestas a la pregunta(3)

Su respuesta a la pregunta