Я хочу иметь класс, который представляет дискретную функцию над целыми числами. Арность функции является параметром шаблона. Конструктор должен принимать (указатели на?) Функции этой арности. Я также хотел бы иметь возможность передавать лямбда-выражения в конструктор. Фактически это основной тип функций, которые я буду передавать.
Далее, я хочу иметь метод eval()
для вычисления значения функции для предоставленных аргументов.
Вопрос в том, как передать и сохранить функцию, а также как ее оценить.
template<int arity>
class DiscreteFun {
private:
FuncType f; // what should FuncType be?
public:
DiscreteFun(FuncType f): f(f) { };
int eval(const array<int,arity>& x) const {
// how to pass arguments so that it calculates f(x[0], x[1], ...)
}
};