Вы можете обернуть функцию с помощью mem_fun_ref
:
mem_fun_ref(&A::do_lengthy_work)(a);
Это может быть очень полезно для алгоритмов STL, таких как for_each
:
std::vector<A> vec;
std::for_each(vec.begin(), vec.end(), mem_fun_ref(&A::do_lengthy_work));
Если у вас есть A *
, вы бы использовали mem_fun
:
std::vector<A *> vecp;
std:for_each(vecp.begin(), vecp.end(), mem_fun(&A::do_lengthy_work));