A bit of background for the unified call proposal
统一调用语法是否允许C ++程序员轻松地将成员函数指针强制转换为非成员函数指针,反之亦然?< / p>
换句话说,是否允许通过发送类的实例作为第一个参数,通过非成员函数指针调用成员函数?
struct X
{
void member() { }
};
X x;
void (*fp)(X*) = &X::member; // ?
fp(&x); // ?
答案 0 :(得分:4)
不,这无法工作,因为指向成员函数的指针不能用简单的函数指针表示。指向成员函数的指针必须能够处理对其应用的对象的虚拟调用,因此必须包含(或触发生成)代码以在必要时取消引用vptr。即,它不是常规指针,只能call
进入。