在线文档教程

ValueSwappable

C++概念:ValueSwappable

这种类型的两个对象可以取消引用,并且可以使用不限定函数调用交换结果值。swap()在这两种情况下std::swap和用户定义的swap()是可见的。

所需

T型ValueSwappable如果。

1%29型T满足Iterator所需

2%29用于任何可撤销的对象x类型T%28--即,除结束迭代器%29以外的任何值,*x满足Swappable所需经费。

许多标准库函数期望它们的参数满足ValueSwappable,这意味着每当标准库执行交换时,它都使用等效的usingstd::swap; swap(*iter1, *iter2...

二次

#include <iostream> #include <vector> class IntVector { std::vector<int> v; IntVector& operator=(IntVector // not assignable public: void swap(IntVector& other) { v.swap(other.v } }; void swap(IntVector& v1, IntVector& v2) { v1.swap(v2 } int main() { IntVector v1, v2; // IntVector is Swappable, but not MoveAssignable IntVector* p1 = &v1; IntVector* p2 = &v2; // IntVector* is ValueSwappable std::iter_swap(p1, p2 // OK: iter_swap requires ValueSwappable // std::swap(v1, v2 // compiler error! std::swap requires MoveAssignable }

二次

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cpPreference.com/w/cpp/Concept/ValueSwappable