Рассмотрим следующую настройку:
Мне дан интерфейс
template<class T>
void FooClass<T>::foo(boost::function<double (int)> f)
{...}
Я хочу реализовать f с помощью Functor:
class MyFun {
public: double operator()(int a) {do something...;}
}
Однако есть и другойфункция, определенная в интерфейсе
template<class T>
template <class FunPtr>
void FooClass<T>::foo(const FunPtr& f)
{...}
Когда вызывается объект FooClass,
MyFun f;
FooClass<double> fooclass;
fooclass.foo(f);
он использует второе определение, а я хочу, чтобы оно вызывало первое - можно ли это изменитькак-то?