обратный вызов vs лямбда

Предположим, у меня есть следующий код, который я хочу реорганизовать:

int toFuture()
{
  precalc();
  int calc = 5 * foobar_x() + 3;
  postcalc();
  return calc;
}

int toPast()
{
  precalc();
  int calc = 5 * foobar_y() - 9;
  postcalc();
  return calc;
}

В классическом C я бы реорганизовал этот код в worker (), который принимает указатель на функцию, выполняющую вычисления : общий код в worker (), конкретный код предоставляется указателем на функцию.

Должен ли я вместо этого использовать лямбда-выражение в C ++ 11? Если да, то как мне реализовать его в этом случае?

Edit: мне пришло в голову, что шаблон также может работать. Каким образом реализация шаблона будет сравниваться с двумя другими?

26
задан ildjarn 11 January 2012 в 17:57
поделиться