Я передаю указатель на функцию-член в функцию шаблона. Что-то вроде этого,
Foo bar; /* bar.baz(...) is a function */
auto pnt = bar.baz;
passMmbFunc<...,decltype(pnt)>(...,pnt);
Соответствующие части passMmbFunc
выглядят так:
template <..., typename D>
void map(..., D func) {
...
auto ret = func(someVal);
...
}
Я предположил, что синтаксис вызова указателя на функцию-член такой же, как и у обычного указателя на функцию, но это не так. Я получаю следующую ошибку,
error: must use '.*' or '->*' to call pointer-to-member function in 'func (...)', e.g. '(... ->* func) (...)'
Изнутри passMmbFunc
, как мне вызвать pnt? Я знаю, что указатель на функцию-член можно вызвать, если у вас есть под рукой объект соответствующего класса. Но поскольку я передаю его как параметр, это не так. Итак, есть ли способ вызвать указатель на функцию-член, если у вас есть только указатель и нет объекта?
size()
илиto_string()
или что-то еще, без экземпляра соответствующего класса? - person Mat   schedule 26.04.2015