情報
次のように、boost::function を使用してコールバックをパラメーターとして渡したいと思います。
void ReadPacket(
boost::function<void (const boost::system::error_code&, Packet* p)> callback);
そしてそれを使用します:
ReadPacket(boost::bind(
&ServerSession::storePacket,
this,
_1,
_2
));
結局、一連のコールバックの後、私は呼び出します
callback(ec, packet);
問題
デバッグでソリューションをコンパイルしたところ、すべて問題ないように見えます...
しかし、リリースでは、上記のエラーがたくさんありました
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 ';'
私は混乱し、がっかりしています。
提案
には異なる構文があることがわかりましたboost::function
。たとえば、boost::function0
またはboost::function1
. これは、VS2010 が何かをサポートしていないために作成されました (正確にはわかりません)。
私は正しいですか?
また、このアプリケーションを可能な限り移植可能でクロスプラットフォームにする必要もあります。
ブースト 1.47 および VS2010