Даже если вы не можете переключиться на C ++ 11, вам следует подумать о переключении с boost :: function на функции TR1, что было предварительным просмотром для C ++ 11
По сути, то, что начиналось как boost :: function, стало частью стандартной библиотеки C ++, которая в настоящее время определяется с помощью шаблонов с переменным числом аргументов. В двух словах это означает, что жестких ограничений больше нет (но вам может потребоваться определить дополнительные переменные-заполнители, если вам нужно что-то за пределами _19
)
Чтобы переключиться с boost :: function на std :: tr1, сделайте следующее
найти все случаи #include <boost/function>
и #include <boost/bind>
и заменить их на:
#include <tr1/functional>
using std::tr1::function;
using std::tr1::bind;
using std::tr1::placeholders::_1;
using std::tr1::placeholders::_2;
...
Это должно работать в качестве замены. Если вам случится переключиться на C ++ 11 позже, просто бросьте
часть "tr1".