std::function -> указатель функции

Вот код:

#include <functional>
using namespace std::tr1;

typedef void(*fp)(void);

void foo(void)
{

}

void f(fp)
{

}

int main()
{
  function<void(void)> fun = foo;
  f(fun); // error
  f(foo); // ok
}

Первоначально мне нужно было сделать указатель на функцию из нестатического метода класса, потому что мне нужно сохранять данные между вызовами функций. Я пробовал std::tr1::bindи boost::bind, но они возвращают функциональный объект, а не указатель, который, как я вижу, не может быть "приведен" к чистому функциональному указателю. В то время как сигнатура функции ( SetupIterateCabinet) требует именно чистого указателя на функцию.

Нужен совет, как решить проблему. Спасибо.

11
задан fogbit 11 May 2012 в 16:47
поделиться