Я знаю, как объявить int fn(double)
внутри std:: function (std::function<int(double)>
). Я знаю, как написать функцию-указатель-член (typedef int (A::*MemFn)(double d);
). Но как написать функцию-указатель-член с помощью std:: function?
Манекен, если вы хотите компилировать/тестировать
-edit- на основе ответов. Думаю, я просто использую typedef и не беспокоюсь о std:: function
#include <cstdio>
#include <functional>
struct A{ int fn(double){ return 0; } };
int fn2(double){ return 0; }
typedef int (A::*MemFn)(double d);
typedef std::function<int(double)> MemFn2;
void Test(A*a, MemFn2 fn){
fn(1.2f);
}
void Test(A*a, MemFn fn){
(a->*fn)(1.2f);
}
int main(){
Test(new A, &A::fn);
Test(new A, &fn2);
}