私が次のようなものを持っている場合
class MyClass
{
public:
void callMe()
{
cout << "called";
}
};
template< void (MyClass::*callFunc)() > struct A
{
void A_call()
{
callFunc();
}
};
int main(int argc, char *argv[])
{
struct A <&MyClass::callMe> object;
object.A_call();
}
これは、「callFunc: term は 0 の引数を取る関数に評価されません」と表示されているため、コンパイルされません。
クラスメンバー関数はコンパイル時の定数ではありませんか?