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 似乎对向量上的类似操作感到满意。难道我做错了什么?

4

0 回答 0