C++ C++;以类方法作为参数的模板

C++ C++;以类方法作为参数的模板,c++,templates,C++,Templates,是否可以将类方法作为参数传递给模板?例如: template<typename T, void(T::*TFun)()> void call(T* x) { x->TFun(); } struct Y { void foo(); }; int main() { Y y; call<Y,&Y::foo>(&y); // should be the equivalent of y.foo() } 这可能吗?如果可能

是否可以将类方法作为参数传递给模板?例如:

template<typename T, void(T::*TFun)()>
void call(T* x) {
    x->TFun();
}

struct Y {
    void foo();
};

int main() {
    Y y;
    call<Y,&Y::foo>(&y);  // should be the equivalent of y.foo()
}

这可能吗?如果可能,语法是什么?

这不是指向成员的指针。您需要先解除对它的引用:

(x->*TFun)();

我使用括号来处理运算符优先级问题
TFun
在调用之前将被取消引用。

这与模板无关。用常规成员函数指针试试,尤其是接受答案最后一行的语法。@WhozCraig,谢谢你的链接,如果我以前发现了,我就不用在这里问了;)谢谢我想我试过那个语法,但一定是弄错了或是出了什么差错。不过,它现在可以编译了。
(x->*TFun)();