#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;
}