#include <stdarg.h>
#include <stdio.h>
template<size_t N>
int test(int x1, ...)
{
size_t n = N;
va_list ap;
va_start(ap, x1);
printf("test<N>\n");
int sum = x1;
for(size_t i = 1; i < n; ++i)
sum += va_arg(ap, int);
va_end(ap);
return sum;
}
template<>
int test<3U>(int x1, ...)
{
size_t n = 3U;
va_list ap;
va_start(ap, x1);
printf("test<3>\n");
int sum = x1;
for(size_t i = 1; i < n; ++i)
sum += va_arg(ap, int);
va_end(ap);
return sum;
}
int main()
{
const int t2 = test<2>(1, 2);
printf("%d\n", t2);
const int t3 = test<3>(1, 2, 3);
printf("%d\n", t3);
return 0;
}
I2luY2x1ZGUgPHN0ZGFyZy5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCnRlbXBsYXRlPHNpemVfdCBOPgppbnQgdGVzdChpbnQgeDEsIC4uLikKewogICAgc2l6ZV90IG4gPSBOOwogICAgdmFfbGlzdCBhcDsKICAgIHZhX3N0YXJ0KGFwLCB4MSk7CgogICAgcHJpbnRmKCJ0ZXN0PE4+XG4iKTsKCiAgICBpbnQgc3VtID0geDE7CgogICAgZm9yKHNpemVfdCBpID0gMTsgaSA8IG47ICsraSkKICAgICAgICBzdW0gKz0gdmFfYXJnKGFwLCBpbnQpOwoKICAgIHZhX2VuZChhcCk7CgogICAgcmV0dXJuIHN1bTsKfQoKdGVtcGxhdGU8PgppbnQgdGVzdDwzVT4oaW50IHgxLCAuLi4pCnsKICAgIHNpemVfdCBuID0gM1U7CiAgICB2YV9saXN0IGFwOwogICAgdmFfc3RhcnQoYXAsIHgxKTsKCiAgICBwcmludGYoInRlc3Q8Mz5cbiIpOwoKICAgIGludCBzdW0gPSB4MTsKCiAgICBmb3Ioc2l6ZV90IGkgPSAxOyBpIDwgbjsgKytpKQogICAgICAgIHN1bSArPSB2YV9hcmcoYXAsIGludCk7CgogICAgdmFfZW5kKGFwKTsKCiAgICByZXR1cm4gc3VtOwp9CgppbnQgbWFpbigpCnsKICAgIGNvbnN0IGludCB0MiA9IHRlc3Q8Mj4oMSwgMik7CiAgICBwcmludGYoIiVkXG4iLCB0Mik7CgogICAgY29uc3QgaW50IHQzID0gdGVzdDwzPigxLCAyLCAzKTsKICAgIHByaW50ZigiJWRcbiIsIHQzKTsKCiAgICByZXR1cm4gMDsKfQoKCg==