2つのプライオリティキュー間でデータを入れ替えようとしていて、このエラーが発生しました。私もいくつかのグーグルをして、まだ何が間違っているのか分からない。 '< lambda_07efac20ebfa61cc8bb35aebd7d81f7c> & < < lambda_07efac20ebfa61cc8bb35aebd7d81f7c >> ::演算子=(constの< < lambda_07efac20ebfa61cc8bb35aebd7d81f7c >> &')プライオリティキューを交換するときに削除された関数エラーを参照しようとしています
エラーC2280:
#include <queue> class Node { public: int idx; }; auto greater = [](const Node& a, const Node& b) {return a.idx > b.idx; }; using QUEUE = std::priority_queue<Node, std::vector<Node>, decltype(greater)>; void foo(QUEUE& a) { QUEUE b(greater); a.swap(b); } int main() { }
はここで完全なエラーメッセージですしよう参照番号 削除された機能
Visual Studioでは変わったようです。このコードは私のマシン上で正常にコンパイルされます(clang-802.0.42)。 –
@Volもしそうなら、それはまたGCC 5.1.0の奇妙なものです。 –
@NeilButterworth標準ライブラリ実装がここで役割を果たします。 libstdC++でコンパイルしませんが、libC++でコンパイルします。 –