私は次のスニペットとのトラブルに実行している:clang
を使用してはSTDの結果を変換できません::バインド先はstd ::機能
std::promise<int> promise;
auto operation = [](std::promise<int> promise) { promise.set_value(1); };
auto fn = std::bind(operation, std::move(promise));
fn();
私は次のエラーを取得:
candidate template ignored: substitution failure [with _Args = <>]: implicit instantiation of undefined template 'std::__1::__bind_return<(lambda at promise.cpp:7:12), std::__1::tuple >, std::__1::tuple<>, false>' operator()(_Args&& ...__args)
を感謝あらかじめ!
移動キャプチャが必要です。 'std :: bind'はそれを行えません。 [ラムダはC++ 14から始めることができます](http://stackoverflow.com/questions/8640393/move-capture-in-lambda)、C++ 11ではできません。 –
@IgorTandetnik 'std :: bind'は動きのキャプチャをうまくやることができます。問題は、キャプチャされたものを左辺値として渡すことです。 –
あなたのタイトルは誤解を招く:現在のコードには 'std :: function'は含まれていません。 – ysdx