#include <cstdarg>
#include <iostream>
#include <cassert>
using namespace std;
int add(int n)
{
assert(0 == n);
return 0;
}
template <typename T>
T add(int n, T first, ...)
{
T sum = first;
va_list vl;
va_start(vl,first);
for(int i=1;i<n;i++)
{
sum += va_arg(vl,T);
}
va_end(vl);
return sum;
}
int main()
{
std::cout<<add(3,1,2,3);
std::cout<<add(3,1.5,2.,3.5);
return 0;
}
I2luY2x1ZGUgPGNzdGRhcmc+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNhc3NlcnQ+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgYWRkKGludCBuKQp7Cglhc3NlcnQoMCA9PSBuKTsKCXJldHVybiAwOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KVCBhZGQoaW50IG4sIFQgZmlyc3QsIC4uLikKewogICAgVCBzdW0gPSBmaXJzdDsKICAgIHZhX2xpc3Qgdmw7CiAgICB2YV9zdGFydCh2bCxmaXJzdCk7CiAgICBmb3IoaW50IGk9MTtpPG47aSsrKQogICAgewogICAgICAgIHN1bSArPSB2YV9hcmcodmwsVCk7CiAgICB9CiAgICB2YV9lbmQodmwpOwogICAgcmV0dXJuIHN1bTsKfQppbnQgbWFpbigpCnsKICAgIHN0ZDo6Y291dDw8YWRkKDMsMSwyLDMpOwogICAgc3RkOjpjb3V0PDxhZGQoMywxLjUsMi4sMy41KTsKICAgIHJldHVybiAwOwp9Cg==