#include <iostream>
void Foobar() {}
template<typename First, typename... Rest>
void Foobar(const First &val, Rest... args)
{
val.PrintContent();
Foobar(args...);
}
template<typename... Rest>
void Foobar(const int val, Rest... args)
{
std::cout << val << std::endl;
Foobar(args...);
}
struct A {
A(int a): b(a) {}
void PrintContent() const {
std::cout << "A: " << b << std::endl;
}
int b;
};
int main() {
Foobar(5, 6, 7, A(1));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCBGb29iYXIoKSB7fQoKdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lLi4uIFJlc3Q+CnZvaWQgRm9vYmFyKGNvbnN0IEZpcnN0ICZ2YWwsIFJlc3QuLi4gYXJncykKeyAgCiAgICB2YWwuUHJpbnRDb250ZW50KCk7CiAgICBGb29iYXIoYXJncy4uLik7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lLi4uIFJlc3Q+CnZvaWQgRm9vYmFyKGNvbnN0IGludCB2YWwsIFJlc3QuLi4gYXJncykKeyAgCiAgICBzdGQ6OmNvdXQgPDwgdmFsIDw8IHN0ZDo6ZW5kbDsKICAgIEZvb2JhcihhcmdzLi4uKTsKfQoKc3RydWN0IEEgewogICBBKGludCBhKTogYihhKSB7fQogICB2b2lkIFByaW50Q29udGVudCgpIGNvbnN0IHsKICAgICAgc3RkOjpjb3V0IDw8ICJBOiAiIDw8IGIgPDwgc3RkOjplbmRsOwogICB9CiAgIGludCBiOwp9OwoKaW50IG1haW4oKSB7CiAgIEZvb2Jhcig1LCA2LCA3LCBBKDEpKTsKfQ==