3
此代碼在VS2013中不起作用,但在GCC中起作用(http://ideone.com/WgmlT2)。誰是對的,是否有一些解決方法?VS2013編譯錯誤:通過指向成員的非靜態數據成員初始化
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
這既g ++以及鐺++工程。我懷疑它在vs2013(或一個bug)中還不被支持。 – Jarod42