Функой будем называть объект, который, с одной стороны, подобно функции, может быть "вызван", и с другой стороны, подобно данным, может быть скопирован, удален, или изменен. Вообще-то, в С++ уже давно есть понятие функторов (объекты, переопределяющие оператор вызова). Хотя по описанию это довольно похоже на функу, эти понятия отличаются. Прежде всего, не любой функтор является функой. С другой стороны, хотя любую известную мне функу теоретически можно записать в виде функтора С++, но такая запись часто оказывается очень громоздкой, а многие алгоритмы работы с функами не могут быть обобщены средствами С++ даже при активном использовании template'ов. Функтором, в отличие от "функторов С++", мы будем называть операцию, которая возвращает функу или несколько функ. Дискуссия по поводу функ шла в течение нескольких сотен постов, и, надеюсь, еще не закончена. Пока что я не стану размещать здесь выдержки из дискуссии.
|