Я пытаюсь передать указатель на функцию-член в качестве параметра шаблона.Вот код:
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'
...
Насколько я знаю, указатели на функции-члены являются допустимыми параметрами шаблона.Я не понимаю, что не так с предыдущим кодом.Я использую компилятор g ++ 4.5.2 под Ubuntu.
Заранее спасибо.
ОБНОВЛЕНИЕ:
Кажется, код должен бытьневерно, поскольку mptr
является переменной времени выполнения.С другой стороны, предыдущий фрагмент кода компилируется:
http://ideone.com/cv8pq
, так что ... правильно?это зависит от компилятора?