Here is a code:
#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
}
Originally i need to make a function pointer from non-static class method because i need to save data between function callings. I tried std::tr1::bind
and boost::bind
, but they return functional object, not pointer, which, as i can see, can't be "casted" to pure functional pointer. While the function signature (SetupIterateCabinet
) demands a pure func pointer exactly.
I need an advise how to solve the problem. Thank you.
See Question&Answers more detail:os