Вычислите среднее значение нескольких значений, используя функцию вариативного шаблона.C++

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

Сообщение Anonymous »

Я пытаюсь написать функцию для определения среднего значения произвольного количества аргументов, все из которых имеют один и тот же тип. В учебных целях я пытаюсь сделать это, используя функцию с переменным шаблоном.

Вот что у меня есть:

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

template
T Mean(Args ... args)
{
int numArgs = sizeof...(args);
if (numArgs == 0)
return T();           // If there are no arguments, just return the default value of that type

T total;
for (auto value : args...)
{
total += value;
}

return total / numArgs;   // Simple arithmetic average (sum divided by total)
}
Когда я пытаюсь скомпилировать это (с помощью MS Visual Studio 2013), я получаю следующую ошибку компиляции:

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

error C3520: 'args' : parameter pack must be expanded in this context (test.cpp)
Как правильно «распаковать» пакет параметров args? Я думал, что в этом и цель эллипсов.

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

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

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

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

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

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