Правильный синтаксис для шаблона функции с четным числом аргументов int?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Правильный синтаксис для шаблона функции с четным числом аргументов int?

Сообщение Anonymous »

При переписывании функции C с переменными аргументами в качестве шаблона функции я пытаюсь найти правильный синтаксис. xfun() должна быть функцией с двойным параметром, за которым следует четное число целых чисел. Что-то вроде:

Код: Выделить всё

#include 
#include 

double xfun (double)
{
return 0.0;
}

template
double xfun (double p, int t, int ex, int...)
{
return t * pow (p, ex) + xfun (p, xs...);
}

int main ()
{
// Expecting 0.0234
printf ("x = %f\n", xfun (0.1, 2,2, 3,3, 4,4));

// Expecting 0.56
printf ("x = %f\n", xfun (0.1, 5,1, 6,2));
}
Для меня очевидно, что код не может быть правильным, поскольку xfun ничего не делает с параметром int....
Я пробовал следовать примерам на cppreference.com: Packet Pack , в частности последнему, который делает подобные вещи. Хотя во всех примерах используются шаблонные типы, тогда как в моем примере все типы являются int, и я не уверен, что xfun вообще должен быть шаблоном, поскольку он не имеет ни типов в качестве аргумента шаблона, ни значений int в качестве аргументов шаблона.
Целью функции является вычисление

Код: Выделить всё

xfun = \sum_{k=1}^n t_k * p^{ex_k}
Изображение
где n известно во время компиляции.

Изменить: Самое близкое к рабочему решению, которое я смог найти, это

Код: Выделить всё

template
double xfun (double p, T t, T ex, Ints... ints)
{
return t * pow (p, ex) + xfun (p, ints...);
}
но это не удается, если удалить параметр T и использовать обычный int или когда я заменяю имя типа... на int....


Подробнее здесь: https://stackoverflow.com/questions/798 ... -arguments
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»