![](/img/trans.png)
[英]C++ member function templates takes member function pointer as the template argument
[英]Defining a proxy for a member function that takes a member function pointer as a template argument
我正在使用带有这样声明的类的第三方库:
template<typename Ret, typename... Args>
class Delegate<Ret(Args...)>
{
// ...
};
它具有一些具有2个模板参数的模板成员函数。 第一个参数是类类型,第二个参数是成员函数指针:
template<typename Class, Ret(Class:: *Member)(Args...) const>
void connect(Class *instance);
template<typename Class, Ret(Class:: *Member)(Args...)>
void connect(Class *instance);
然后按以下方式使用:
class A
{
void f(int)
{ }
void foo()
{
Delegate<void(int)> d;
d.connect<A, &A::f>(this);
}
};
我想创建一个代理模板函数MyConnect
,该函数简单地将参数转发给Delegate's
connect
class A
{
void f(int)
{ }
void foo()
{
MyConnect<A, &A::f>(this);
}
template <???>
void MyConnect(???)
{
Delegate<void(int)> d;
d.connect<???, ???>(this);
}
};
我无法执行此template <typename Class, void(Class::*Member)(int)>
因为我不知道返回类型是什么,也不知道函数参数的数量
在C ++ 17中,您可以使用auto
:
template <typename C, auto m>
void MyConnect()
{
Delegate<void(int)> d;
d.connect<C, m>(this);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.