以下の単純なコードは、Mac で Clang を使用してコンパイルすることはできません。
void foo(std::vector<std::unique_ptr<int> > &fromVector,
std::multiset<std::unique_ptr<int> > &fromMultiset) {
std::vector<std::unique_ptr<int> > to;
auto fv = fromVector.begin();
to.push_back(std::move(*fv));
auto fms = fromMultiset.begin();
to.push_back(std::move(*fms));
}
コンパイラは、std::move(*fms) によって取得された右辺値をプッシュバックすると、削除されたコピー コンストラクターの呼び出しが必要になると文句を言います。一方、Clang は vector に対する同様の操作に満足しているようです。私は何か間違ったことをしていますか?