下面的简单代码无法在 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 似乎对向量上的类似操作感到满意。难道我做错了什么?