为std :: bind创建模板包装器

时间:2019-06-16 13:06:54

标签: c++ templates member-functions

我正在尝试为std :: bind创建一个简单的包装函数,该包装函数将使用成员函数。

template<typename T, typename F>
void myBindFunction(T &t)
{
   std::bind(T::F, t );
}

MyClass a = MyClass();
myBindFunction <MyClass, &MyClass::m_Function>( a );

我不确定我是否试图实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以将第二个模板参数设为non-type template parameter,即成员函数指针。

template<typename T, void(T::*F)()>
void myBindFunction(T &t)
{
   std::bind(F, t); // bind the member function pointer with the object t
}

LIVE