コンパイラは、削除された関数(ラムダ式のコピーコンストラクタ)にアクセスしようとしていると伝えます。しかし、私はどこに見えません。要素をコピー可能でないベクトルに移動できないのはなぜですか?
std::vector<std::function<void()>> tasks;
std::packaged_task<int()> task{ [] { return 1; } };
tasks.emplace_back(
[ t = std::move(task) ]() mutable { t(); });
(私は、彼らがhttps://www.slideshare.net/GlobalLogicUkraine/c11-multithreading-futuresでshared_ptr<task>
を使用する理由を見つけようとしています)。 GCCとMSVCで
私は同じエラーを取得する - 私は何か間違ったことをやっている恐れ...
error: use of deleted function
'main()::<lambda()>::<lambda>(const main()::<lambda()>&)'
は、なぜ私はベクトル上にこのstd::function
を据え付けることができませんか?
[コピー不可能なstd ::関数をコンテナに格納する方法は?](質問/ 28208948 /保管方法 - コピー不可能 - コンテナへの保存方法) – cpplearner
@cpplearnerありがとうございますすべてが「機能」に至り、CopyConstructableを指示していますか? – xtofl