Если вы не можете использовать C ++ 0x, как все остальные предлагали, есть несколько способов избежать того, что вы пытаетесь сделать, которые имитируют до некоторой степени, но не полностью отражают анонимный аспект:
template<typename T>
void foo(const T& _someFunctor, double _someArgument){
_someFunctor(_someArgument);
}
Или вы могли бы иметь более определенную структуру как:
int bar(const boost::function<int(double,double)>& _aFunction, double arg1, double arg2){
return _aFunction(arg1+2.0, arg2+2.0);
}
подход Boost :: Function , вероятно, является наиболее подходящим, поскольку он определяет очень строгий интерфейс функции, в то время какразрешение использования с:
- Boost :: Bind
- функциями
- функциями-членами
- функторами (функционируют как объекты)