Это прекрасно работает для меня с GCC4.5:
#include <boost/bind.hpp>
#include <boost/function.hpp>
int main() {
boost::function<void(bool)>
fncPtr(boost::bind<void>([](bool){/* something */}, _1));
}
Ему не нужны типы параметров.Эти типы параметров в любом случае могут быть шаблонными (для некоторых функторов), поэтому в общем случае они не могут зависеть от них.Требуется только тип возвращаемого значения.
Кстати, у меня даже работает, когда я прохожу <void, bool>
, но только тогда, когда у лямбд нет захватов.Я думаю, что это может работать для меня, потому что GCC4.5 поддерживает преобразование лямбда-выражений в типы указателей на функции, когда в лямбда-выражениях нет условия захвата.<void, bool>
заставит bind
иметь кандидата, который принимает указатель на функцию, и сделает лямбда-преобразование в него.Ваш компилятор, очевидно, еще не поддерживает это специальное преобразование (но FDIS требует этого).
Итак, просто передайте <void>
, и оно должно работать.