void f(int i)
{
std::cout<<i<<std::endl;
}
typedef void(*pF)(int);
pF signlll(int i, void(*p)(int))
{
std::cout << i << std::endl;
return f;
}

void (*signll2(int i, void(*p)(int)))(int)//过于复杂不推荐
{
std::cout << i << std::endl;
return f;
}

auto signll3(int i, void(*p)(int)) ->void(*)(int)//c++11
{
std::cout << i << std::endl;
return f;
}

int main() {
void (*p)(int);
p = signlll(11, f2);
p(11);
p = signll2(22, f2);
p(22);
p = signll3(33, f2);
p(33);
}