在Bjarne Stroustrup的主页(C++11 FAQ)中:
struct X { int foo(int); };
std::function<int(X*, int)> f;
f = &X::foo; //pointer to member
X x;
int v = f(&x, 5); //call X::foo() for x with 5
它怎麽工作?std::function如何调用foo成员函数
模板参数是int(X*, int)
,&X::foo
是否从成员函数指针转换为非成员函数指针?!
(int(*)(X*, int))&X::foo //casting (int(X::*)(int) to (int(*)(X*, int))
澄清一下:我知道我们不需要强制转换任何指针来使用std:: function,但是我不知道std::function的内部是如何处理成员函数指针和非成员函数指针之间的不兼容性的。我不知道标准是怎么允许我们实现像std::function这样的东西的!
https://stackoverflow.com/questions/3534812
复制相似问题