0
私は、Visual C++で以下のコードを追加して、削除された関数について深刻なエラーを受けています。 (VS 2015 アップデート2.私もVS 15のプレビューを試みましたが、それは同じです)Visual C++でExecutorでboost :: asyncを使用できますか?
ClangとGCCの最新バージョンはこれでOKですが、おそらくVSはちょっと厳しいですが本当に正しいですか?
#define BOOST_THREAD_PROVIDES_FUTURE
#define BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION
#define BOOST_THREAD_PROVIDES_EXECUTORS
#include <boost/thread/future.hpp>
class TestEx {
public:
void submit(std::function<void()>) {
}
bool try_executing_one() {
return false;
}
bool closed() {
return false;
}
void close() {
}
};
int main()
{
TestEx tex;
boost::async(
tex,
[]() {});
return 0;
}
これをコンパイルしてみたいが、アップデート2のVisual Studio 2015へのアクセス権を持っていて、ここでそうオンライン行うことができ後押ししていない場合。
を使用することで指摘したように'std :: function'が非コピー可能型のコピーをトリガーしています。これがMSVCのバグであれば私は驚くことはありません。彼らの実装は ''で、不必要にコピーすることが知られていましたが、私は指を指すのに十分な大きさのテンプレートをほどいたわけではありません。 –
'' std :: function'、 '' boost :: executor_adaptor' '(http://www.boost.org/doc/libs/1_60_0/doc/html/thread/synchronization.html#thread)を使い続けるには、 .synchronization.executors.ref.executor_adaptor)はあなたのクラス( 'Executor'コンセプトに従う)をラップし、' std :: function'への変換を行います。 http://rextester.com/edit/IZN86995 'Executor'概念と' boost :: executor'の違いについては、[here](http://www.boost.org/doc/libs/1_60_0/doc)を参照してください。 /html/thread/synchronization.html#thread.synchronization.executors.rationale.closure)。 –
素晴らしい提案をありがとう。 'submit'関数のテンプレートが動作するように見えます。後で生産コードで試してみることを楽しみにしています。何が起こっているのか正確に何かを考え出すためにテンプレートの拡張をデバッグすることができればうれしいです。 –