Mayor, это не передача типа, а передача параметра определенного типа (большая разница).
Алексей1153++, sum<string> в данном примере нужен для возвращаемого значения (если бы функция возвращала строго определенный тип данных, эта спецификация не требуется)
Mayor, я так и не понял что же нужно (только понял, что то что предложено не нужно
), могу предложить это (хотя это уже на гадание похоже). Первый параметр у f, как ты говоришь, для "передачи типа"
#include "stdafx.h"
#include <string>
typedef long (*f1)();
typedef int (*f2)();
int f11() {return 1;}
long f22() {return 2;}
template<class T, class P> void f(T a, P b)
{
T x = b();
x += 1;
};
int main()
{
f(int(1), f11);
f(int(2), f22);
f(long(3), f11);
f(long(4), f22);
return 0;
}
Это то что нужно? Тут можно любую функцию передать, но понятно, что шаблон должен принимать (ну если должен) все необходимые параметры. Но при этом как минимум по одному параметру каждого типа аргумента передаваемой функции (при условии что эти типы не фиксированы например в реализации шаблона)