什么是`R(*pf)(void*, Args...)`,指向方法的函数指针?
What is `R(*pf)(void*, Args...)`, function pointer to a method?
我看到了这种。我相信他正在尝试为类型擦除的成员指针创建一个变量 pf
(这就是那里有 void*
的原因)。然后我注意到这种类型签名类似于 classes.
但根据 isocpp 非静态成员指针类型定义如下:
int (Fred::*)(char,float)
(对于某些 class Fred
)
函数指针类型定义如下:
int (*)(char,float)
因此可以像这样创建一个成员指针变量 mp
:
int (S::*mp)(int) = nullptr;
也许这个void*
代表this*
,它是通过定义函数指针变量来定义成员指针变量的另一种方式?这可能吗?
什么是 R(*pf)(void*, Args...)
?
是函数指针的声明。仅此而已。
兼容函数采用 void*
和 Args...
,以及 return R
。
在给定的示例中,分配给指针的兼容函数是 lambda。 void*
是某些可调用对象 f
的类型擦除地址,而 Args...
成员是将传递给该可调用对象的参数。通过在 lambda 中捕获类型别名来恢复可调用对象的类型(很好!)。
R(*pf)(void*, Args...)
是指向 returns R
并具有 (void*, Args...)
参数的函数的函数指针(常规指针,不是指向成员的指针),其中 Args...
是类型列表(扩展的模板参数包)。
Maybe this void*
represents this*
and its another way to define a member pointer variable
不,C++ 中没有这样的功能。
如果您查看 ,唯一分配给该指针的是 lambda,例如:
pf = [](void* ptr, Args... args)->R{
return blah;
};
我不确定您为什么希望涉及指向成员的指针。
我看到了这种pf
(这就是那里有 void*
的原因)。然后我注意到这种类型签名类似于 classes.
但根据 isocpp 非静态成员指针类型定义如下:
int (Fred::*)(char,float)
(对于某些 class Fred
)
函数指针类型定义如下:
int (*)(char,float)
因此可以像这样创建一个成员指针变量 mp
:
int (S::*mp)(int) = nullptr;
也许这个void*
代表this*
,它是通过定义函数指针变量来定义成员指针变量的另一种方式?这可能吗?
什么是 R(*pf)(void*, Args...)
?
是函数指针的声明。仅此而已。
兼容函数采用 void*
和 Args...
,以及 return R
。
在给定的示例中,分配给指针的兼容函数是 lambda。 void*
是某些可调用对象 f
的类型擦除地址,而 Args...
成员是将传递给该可调用对象的参数。通过在 lambda 中捕获类型别名来恢复可调用对象的类型(很好!)。
R(*pf)(void*, Args...)
是指向 returns R
并具有 (void*, Args...)
参数的函数的函数指针(常规指针,不是指向成员的指针),其中 Args...
是类型列表(扩展的模板参数包)。
Maybe this
void*
representsthis*
and its another way to define a member pointer variable
不,C++ 中没有这样的功能。
如果您查看
pf = [](void* ptr, Args... args)->R{
return blah;
};
我不确定您为什么希望涉及指向成员的指针。