Основная причина этого заключается в том, что for_each() фактически не предполагает его третий аргумент - функция. Он просто предполагает, что его третий аргумент - это то, что может быть вызываемый с соответствующим аргументом. подходящий объект также служит как - и часто лучше, чем - функция. Например, легче inline оператор приложения класс, чем встроить переданную функцию как указатель на функцию. Следовательно, объекты функции часто выполнять быстрее, чем обычные функции. Объект класса с оператор приложения (§11.9) называемый функциональным объектом, функтор или просто объект функции.
[Stroustrup, С++ 3rd edition, 18.4-last paragraph]
-
Я всегда думал, что оператор (), как вызов функции во время выполнения. как он отличается от вызов нормальной функции?
-
Почему проще встраивать оператора приложения, чем обычный функция?
-
Как они быстрее, чем функция позвонить?