Я только начал изучать шаблоны на C++ и не знаю терминологию, но это то, что я хочу делать. Допустим, у меня есть три функции.C++ шаблоны это возможно?
double fa(double a)
{
return a;
}
double fb(double a, double b)
{
return (a+b);
}
double fc(double a, double b, double c)
{
return (a+b+c);
}
Пусть говорят, что я хочу передать функции фа, Fb или Fc в новую функцию под названием вычислить:
void compute(double (*func)(double))
{
func(1);
std::cout << "1 argument here";
}
void compute(double (*func)(double, double))
{
func(1,2);
std::cout << "2 arguments here";
}
void compute(double (*func)(double, double, double))
{
func(1,2,3);
std::cout << "3 arguments here";
}
Есть ли способ, чтобы определить функцию «вычислений» без перегрузки функций, но с использованием шаблонов вместо? Поэтому я мог бы передать функцию с произвольным числом аргументов.
Вы всегда проходя 1,2,3 ... ? – chris
Это не Haskell или OCaml, C++ на самом деле имеет функции с несколькими аргументами, а не currying. Так что это должно быть 'void compute (double (* func) (double, double, double))' –
Ops, fixed. Да, допустим, всегда проходим 1,2,3 ... – Winten