I think according to the C ++ 11 standard, this should be supported
Not so, because the non-static member function has an implicit first parameter of type (cv-qualified) YourType* , so in this case it does not match void(int) . Therefore, std::bind is required:
Register(std::bind(&Class::Function, PointerToSomeInstanceOfClass, _1));
for instance
Class c; using namespace std::placeholders;
Change You mentioned that this needs to be called with the same instance of Class . In this case, you can use a simple non-member function:
void (int n) foo { theClassInstance.Function(n); }
then
Class c; c.Register(foo);
source share