#include <stdio.h>
#include <iostream>
using namespace std;
template <class T1,class T2> void func_1(T1 x,T2 y);
template <class T1,class T2> void func_2(void (*)(T1,T2));
int main()
{
func_2(func_1<int, char>);
return 0;
}
template <class T1,class T2>
void func_1(T1 x,T2 y)
{
cout << "\nx = "<< x <<" y = "<< y <<"\n";
}
template <class T1,class T2>
void func_2(void (*p)(T1,T2))
{
p(444, 'N');
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnRlbXBsYXRlIDxjbGFzcyBUMSxjbGFzcyBUMj4gdm9pZCBmdW5jXzEoVDEgeCxUMiB5KTsKIAp0ZW1wbGF0ZSA8Y2xhc3MgVDEsY2xhc3MgVDI+IHZvaWQgZnVuY18yKHZvaWQgKCopKFQxLFQyKSk7CiAKIAppbnQgbWFpbigpCnsKICAgIGZ1bmNfMihmdW5jXzE8aW50LCBjaGFyPik7CiAgIAogICAgcmV0dXJuIDA7Cn0KIAp0ZW1wbGF0ZSA8Y2xhc3MgVDEsY2xhc3MgVDI+CnZvaWQgZnVuY18xKFQxIHgsVDIgeSkKIAp7CiAgICBjb3V0IDw8ICJcbnggPSAiPDwgeCA8PCIgeSA9ICI8PCB5IDw8IlxuIjsKfQogCnRlbXBsYXRlIDxjbGFzcyBUMSxjbGFzcyBUMj4Kdm9pZCBmdW5jXzIodm9pZCAoKnApKFQxLFQyKSkKIAp7CiAgICBwKDQ0NCwgJ04nKTsKfQog