INFO
我想使用boost :: function來傳遞迴調參數,就像這樣:boost :: VS2010中的函數:錯誤C2039:'function':不是'boost'的成員
void ReadPacket(
boost::function<void (const boost::system::error_code&, Packet* p)> callback);
,然後使用它:
ReadPacket(boost::bind(
&ServerSession::storePacket,
this,
_1,
_2
));
畢竟後回調鏈我叫
callback(ec, packet);
問題
我剛剛編譯解決方案調試,一切看起來OK ...
但發行我得到了很多錯誤的上述
BasicSession.h(30): error C2039: 'function' : is not a member of 'boost'
BasicSession.h(30): error C2061: syntax error : identifier 'function'
BasicSession.h(30): error C2059: syntax error : ')'
BasicSession.h(30): error C2143: syntax error : missing ')' before ';'
提到我很困惑和失望。
SUGGESTION
我發現,有是在boost::function
不同的語法。例如boost::function0
或boost::function1
。這是由於VS2010不支持的東西(我不知道究竟是什麼)
我是對的嗎?
我還需要將此應用程序作爲可移植和跨平臺的應用程序。
提升1.47和VS2010
MSVC10不支持* variadic模板*。任何僞造可變行爲的東西(比如'bind')都必須使用一些骯髒的詭計。 –
@kerrekSB so ...我應該怎麼做,如果我想使用傳遞迴調函數作爲參數的方法。就像在ASIO做的一樣。 – nix
不知道,對不起:-)聽起來這是一個MSVC的具體問題。我確信有編譯器經驗的人會很快發佈一些有用的東西! –