此代码在 VS2013 中不起作用,但在 GCC ( http://ideone.com/WgmlT2 ) 中起作用。谁是对的,是否有一些解决方法?
struct A
{
void(A::*fn)() = &A::do_work; // C2276: '&' : illegal operation on bound member function expression
void do_work() { cout << "Hello, world!"; }
};
int main()
{
A a;
(a.*(a.fn))();
}
我需要它在宏路由器之类的东西中,因此构造函数初始化列表中的初始化不合适。
#define ROUTE(url, ...) \
route_inserter_base route_inserter_##url = make_route_inserter(*this, #url, &this_t::url##_action); \
mystream url##_action
ROUTES_BEGIN(app)
ROUTE(getdata)(int idx) {
return data[idx];
}
ROUTES_END