@ Drax - , , . , , . , , . :
#include <iostream>
using namespace std;
template<typename T>
T Mean(T head)
{
return head;
}
template<typename T, class ... Args>
T Mean(T head, Args... args)
{
auto N = sizeof...(Args);
return (head + (N)*Mean(args...)) / (N + 1);
}
int main(void)
{
cout << Mean((double)1, (int)2, (float)4) << endl;
}
, ,
#include <iostream>
using namespace std;
template<typename T>
T Mean_wrapper(T head)
{
return head;
}
template<typename T, class ... Args>
T Mean_wrapper(T head, Args... args)
{
return head + Mean_wrapper(args...);
}
template<typename T, class ... Args>
T Mean(T head, Args... args)
{
return Mean_wrapper(head, args...) / (sizeof...(args) + 1);
}
int main(void)
{
cout << Mean((double)10, (int)20, (float)30) << endl;
}