什么是`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)

因此可以像这样创建一个成员指针变量 mpint (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;
};

我不确定您为什么希望涉及指向成员的指针。