Я так не думаю, только потому, что boost::bind
в этом случае ищет указатель функции, а не шаблон функции.Когда вы передаете FCall2Templ<int, int>
, компилятор создает экземпляр функции, и она передается как указатель на функцию.
Однако вы можете сделать следующее, используя функтор
struct FCall3Templ {
template<typename ARG1, typename ARG2>
ARG1 operator()(ARG1 arg1, ARG2 arg2) {
return arg1+arg2;
}
};
int main() {
boost::bind<int>(FCall3Templ(), 45, 56)();
boost::bind<double>(FCall3Templ(), 45.0, 56.0)();
return 0;
}
.укажите тип возвращаемого значения, поскольку тип возвращаемого значения привязан к входам.Если возврат не меняется, то вы можете просто добавить typedef T result_type
в шаблон, чтобы bind мог определить, каков будет результат