В С++ совершенно невозможно передать локальную функцию или функтор глобальной функции? Кажется, что все признаки указывают на «нет». Кажется, это самый простой способ решить простую реализацию математической функции, такую как интегратор:
template<class integrand>
void integrate(integrand f) {
...
f();
...
}
int main() {
struct twofer {
int operator()(int i) const { return 2*i; }
};
integrate(twofer());
}
или что-то типа того. Это не удается, потому что я не могу передать локальный объект в шаблон. Я знаю, что новый стандарт позволяет использовать здесь лямбда-функции, но я не могу использовать новый стандарт прямо сейчас. Я действительно хочу, чтобы функция была объявлена локально, потому что я думаю, что это делает вещи читабельными, особенно в реальном коде, для которого это прокси. Я знаю, что мог бы поместить twofer в класс или структуру, полную интегрируемых функций, но опять же я думаю, что это разрушает читабельность. Есть ли альтернативы?