R(C::*)(P1,P2)是什么意思

What does R(C::*)(P1,P2) mean?

本文关键字:P2 是什么 意思 P1      更新时间:2023-10-16

我看到了这个模板声明:

template<typename C, typename R, typename P1, typename P2> struct mystruct<R(C::*)(P1,P2)> { ... };

我知道C::*的意思是"指向C成员的指针",但我不明白R(C::*)(P1,P2)对的作用

R(C::*)(P1,P2)

指向C类成员函数的指针,采用P1和P2类型的参数,返回R.

该行作为一个整体是类模板专用化(必须至少在某个地方存在mystruct的主模板声明)。

这意味着传递给mystruct的模板参数的类型是指向C的成员函数的指针,返回类型为R,它接受P1P2两个类型的参数。

R(C::*)(P1,P2)表示指向函数的指针,该函数是C返回R的成员,并将P1和P2作为参数。