#include <iostream>
using namespace std;
void foo(float x, int y) {
std::cout << "Foo1: " << x << " " << y << "\n";
}
void foo(int x, const char* s) {
std::cout << "Foo2: " << x << " " << s << "\n";
}
void foo(int x, int y, int z) {
std::cout << "Foo3: " << x << y << z << "\n";
}
template <typename... Args>
void bar(Args&&... args) {
// Select foo based on arg types?
}
int main() {
bar(4.2f, 5);
bar(3, "something");
bar(6, 6, 6);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBmb28oZmxvYXQgeCwgaW50IHkpIHsKCXN0ZDo6Y291dCA8PCAiRm9vMTogIiA8PCB4IDw8ICIgIiA8PCB5IDw8ICJcbiI7CQp9Cgp2b2lkIGZvbyhpbnQgeCwgY29uc3QgY2hhciogcykgewoJc3RkOjpjb3V0IDw8ICJGb28yOiAiIDw8IHggPDwgIiAiIDw8IHMgPDwgIlxuIjsKfQoKdm9pZCBmb28oaW50IHgsIGludCB5LCBpbnQgeikgewoJc3RkOjpjb3V0IDw8ICJGb28zOiAiIDw8IHggPDwgeSA8PCB6IDw8ICJcbiI7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgp2b2lkIGJhcihBcmdzJiYuLi4gYXJncykgewoJLy8gU2VsZWN0IGZvbyBiYXNlZCBvbiBhcmcgdHlwZXM/Cn0KCmludCBtYWluKCkgewoJYmFyKDQuMmYsIDUpOwoJYmFyKDMsICJzb21ldGhpbmciKTsKCWJhcig2LCA2LCA2KTsKCXJldHVybiAwOwp9