メンバー関数ポインターをテンプレートパラメーターとして渡そうとしています。コードは次のとおりです。
template <typename Ret, typename T, Ret(T::*mptr)()>
Handle<Value> get_value (Local<String> name, const AccessorInfo& info)
{
...
}
template <typename Ret, typename T>
void mbind (const char* name, Ret (T::*mptr)())
{
....
objectTemplate->SetAccessor (String::NewSymbol (name),get_value<Ret,T,mptr>);
}
そして、これは私が得ているエラーです:
wrapper.h:184:5: error: ‘mptr’ is not a valid template argument for type ‘int (Cell::*)()’
wrapper.h:184:5: error: it must be a pointer-to-member of the form `&X::Y'
...
私の知る限り、メンバー関数へのポインターは有効なテンプレートパラメーターです。前のコードの何が問題なのかわかりません。私が使用しているコンパイラは、Ubuntuではg++4.5.2です。
前もって感謝します。
アップデート:
mptr
実行時変数と同様に、コードが間違っているようです。一方、前のコードの抜粋は次のようにコンパイルされます。
だから...それは正しいですか?コンパイラに依存しますか?