1

以下の単純なコードは、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 に対する同様の操作に満足しているようです。私は何か間違ったことをしていますか?

4

0 に答える 0