想把成员函数指针的函数类型分离出来,结果手头的编译器(gcc, VC

全都编译不过去:
代码:
#include<iostream>
#include <cmath>
using namespace std;
class Vol
{
public:
void Print() {};
};
void Print()
{
cout << "Print" << endl;
}
//T -- Member Type
//C -- Class Type
template <class T, class C>
void CatchMemFunc(T C::*)
{
T* p = &Print;
(*p)();
}
typedef void (FuncT)();
void NonTempCatch(FuncT Vol::* )
{
FuncT* p= &Print;
(*p)();
}
int main()
{
//CatchMemFunc(&Vol::Print); ----编译错误
NonTempCatch(&Vol::Print);
system("pause");
return 0;
}
NonTempCatch是详细指明了函数类型才编译过去的,可是依赖模版推导的CatchMemFunc完全不行,推荐个能编译过去的编译器吧