With function pointers you can achieve something like; in most cases even this is only possible at runtime:
#include<iostream>
usingnamespace std;
template<typename T>
void f()
{
cout << "Just one function f." << endl;
}
void printType(auto fkt)
{
if (fkt == f<double>)
cout << "f<double>" << endl;
if (fkt == f<int>)
cout << "f<int>" << endl;
}
int main()
{
auto f1 = f<double>;
auto f2 = f<int>;
cout << typeid(f1).name() << endl;
cout << typeid(f2).name() << endl;
f1();
f2();
printType(f1);
printType(f2);
return0;
}