Ответ 1
Используйте вместо этого следующее:
boost::function<void (int)> f2( boost::bind( &myclass::fun2, this, _1 ) );
Это пересылает первый параметр, переданный объекту функции, в функцию с помощью держателей мест - вам нужно сообщить Boost.Bind, как обрабатывать параметры. С вашим выражением он попытается интерпретировать его как функцию-член, не принимающую аргументов.
См. здесь или здесь для общих шаблонов использования.
Обратите внимание: VC8s cl.exe регулярно сбой при использовании Boost.Bind. Если у вас есть сомнения, используйте тестовый файл с gcc, и вы, вероятно, получите хорошие подсказки, такие как параметры шаблона. Привязанные внутренние объекты были созданы, если вы прочитали результат.