void function(); void function() { int x; x = 20; } template T templateFunction(T t) { return t; } template <> int templateFunction(int t) { return t; } extern template double templateFunction(double); template double templateFunction(double); template using TemplateFunctionType = T(&)(T); TemplateFunctionType aliasToTemplateFunction = templateFunction; void f() { aliasToTemplateFunction(1); } void f(int); void f(double); void f2() { function(); }