#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([](){});
}