C++ 突变STL算法作用于可移动但不可复制对象序列的行为

C++ 突变STL算法作用于可移动但不可复制对象序列的行为,c++,c++11,stl,move-semantics,stl-algorithm,C++,C++11,Stl,Move Semantics,Stl Algorithm,如果我有一个可移动但不可复制的类Foo,并将其存储在std::vector中,那么应用诸如分区或排序之类的算法会有任何警告吗?作为这些算法的一部分,正确实现的无抛出交换应该保证正确的行为吗?是 关于元素行为,这两种算法都只要求迭代器可以交换元素,这意味着如果它是可移动类型且容器实现正确,那么行为将是正确的。您尝试过吗?您遇到任何问题了吗?std::sort需要RandomAccessIterators可值交换,其中*i(i是这样的迭代器)是可移动的,请参见[alg.sort]。不存在或不可调

如果我有一个可移动但不可复制的类Foo,并将其存储在std::vector中,那么应用诸如分区或排序之类的算法会有任何警告吗?作为这些算法的一部分,正确实现的无抛出交换应该保证正确的行为吗?


关于元素行为,这两种算法都只要求迭代器可以交换元素,这意味着如果它是可移动类型且容器实现正确,那么行为将是正确的。

您尝试过吗?您遇到任何问题了吗?
std::sort
需要
RandomAccessIterator
s可
值交换
,其中
*i
i
是这样的迭代器)是
可移动的
,请参见[alg.sort]。不存在或不可调用的复制构造函数会有什么问题?只要被调用的构造函数(对于
MoveConstructible
)是move构造函数,我就看不到任何问题。@KerrekSB,我看到了,并且遇到了一些问题。我懒得把我的代码拉出来发布在这里,但我很快就会发布的。