#include <iostream>
#include <type_traits>
template<typename F, typename ...Args>
auto call(F&& f, Args&& ...args)
-> typename std::enable_if<std::is_same<decltype(f()), void>::value>::type
{
std::cout << "call 3\n";
}
template<typename ...Args>
void call(Args&& ...args) {
std::cout << "call 1\n";
}
int main() {
call(1);
call([](){});
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSAuLi5BcmdzPgphdXRvIGNhbGwoRiYmIGYsIEFyZ3MmJiAuLi5hcmdzKQogICAgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPGRlY2x0eXBlKGYoKSksIHZvaWQ+Ojp2YWx1ZT46OnR5cGUKewogICAgc3RkOjpjb3V0IDw8ICJjYWxsIDNcbiI7Cn0KCgp0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5BcmdzPgp2b2lkIGNhbGwoQXJncyYmIC4uLmFyZ3MpIHsKICAgIHN0ZDo6Y291dCA8PCAiY2FsbCAxXG4iOwp9CgoKCmludCBtYWluKCkgewogICAgY2FsbCgxKTsKICAgIGNhbGwoW10oKXt9KTsKfQ==