template<typename R, typename T, typename A1>
class hangj_call
{
public:
	hangj_call(R (T::*f_)(A1), const T& u_):f(f_), u(u_){}

	R operator()(A1 a1){ return (u.*f)(a1); }

private:
	R (T::*f)(A1);
	T u;
};

template<typename R, typename T, typename A1>
hangj_call<R, T, A1> hangj_bind(R (T::*f)(A1), const T& u)
{
	return hangj_call<R, T, A1>(f, u);
}


#include <cstdio>

class X
{
public:
	bool f(int a){
		printf(" %d\n", a);
		return true;
	}
};

int main(int argc, char** argv)
{
	X x;
	auto func = hangj_bind(&X::f, x);
	func(8);

	return 0;
}

原理如此,其它形式的 bind 都类似

相关文章:

  • 2022-12-23
  • 2021-07-13
  • 2022-01-03
  • 2021-07-05
  • 2022-12-23
  • 2022-12-23
  • 2021-08-25
  • 2021-09-10
猜你喜欢
  • 2021-04-10
  • 2022-02-16
  • 2021-07-06
  • 2022-12-23
  • 2022-12-23
  • 2021-09-05
  • 2022-12-23
相关资源
相似解决方案