Привязка возвращает неопределенный тип, поэтому вы не можете напрямую создать переменную этого типа. Однако существует шаблон типа boost::function
, который может быть сконструирован для любой функции или типа функтора. Итак:
boost::function<int(int)> a = boost::bind(f, _1);
должен добиться цели. Плюс, если вы не привязываете какие-либо значения, только заполнители, вы можете вообще обойтись без bind
, потому что function
также может быть создан из указателей функций. Итак:
boost::function<int(int)> a = &f;
должно работать, пока f
равно int f(int)
. Тип сделал это для C ++ 11 как std::function
для использования с замыканиями C ++ 11 (и bind
, что также было принято):
std::function<int(int)> a = [](int i)->int { return f(i, 42); }
обратите внимание, что для прямого вызова в C ++ 11 новое использование auto
стало проще:
auto a = [](int i)->int { return f(i, 42); }
но если вы хотите передать его, std::function
все еще пригодится.