如何使用“auto”来声明指向重载成员函数的指针?
如果我有一个重载的非静态成员函数,我如何auto为该函数的一个版本声明一个指针?
struct Foo{
void bar(){}
void bar(int){}
};
auto ptr = &Foo::bar; // error: unable to deduce 'auto' from '&Foo::bar'
回答
你没有。
好吧,您可以对正确的指针类型进行显式转换,但这与仅将正确的指针类型替换为 确实没有什么不同auto:
using bar_ptr = void (Foo::*)();
bar_ptr ptr = &Foo::bar;
//or
auto ptr = (bar_ptr)&Foo::bar;