#include <iostream>
template <typename T>
class A {};
template <typename T, typename T2>
int hello(A<T> a, A<T2> b, int c)
{
return 69;
}
int hello(int, int, int){ return 42; }
int main()
{
A<int> a;
A<float> b;
decltype(hello(a,b,3)) (*pf)(decltype(a), decltype(b), decltype(3))=hello;
std::cout << (void*)pf << "\n";
std::cout << pf(a,b,3) << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2xhc3MgQSB7fTsgCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVDI+CmludCBoZWxsbyhBPFQ+IGEsIEE8VDI+IGIsIGludCBjKQp7CiAgICByZXR1cm4gNjk7IAp9CmludCBoZWxsbyhpbnQsIGludCwgaW50KXsgcmV0dXJuIDQyOyB9CgoKaW50IG1haW4oKQp7CiAgICBBPGludD4gYTsKICAgIEE8ZmxvYXQ+IGI7CgogICAgZGVjbHR5cGUoaGVsbG8oYSxiLDMpKSAoKnBmKShkZWNsdHlwZShhKSwgZGVjbHR5cGUoYiksIGRlY2x0eXBlKDMpKT1oZWxsbzsKICAgIHN0ZDo6Y291dCA8PCAodm9pZCopcGYgPDwgIlxuIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgc3RkOjpjb3V0IDw8IHBmKGEsYiwzKSA8PCAiXG4iOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgcmV0dXJuIDA7Cn0=