#include <iostream>
#include <functional>
using namespace std;

class test {
public:
  typedef std::function<void(test*)> check_fun_type;

  void mF1(check_fun_type ptr);
  void check1();
  void check2(int v1);
};

void test::check1() {
  std::cout << "check1" << std::endl;
}

void test::check2(int v1) {
  std::cout << "check2 " << v1 << std::endl;
}

void test::mF1(check_fun_type ptr) {
  ptr(this);
}

int main() {
	
	using namespace std::placeholders;
    
    test t1;
    t1.mF1(std::bind(&test::check2, _1, 2));
}
