boost::adl_move_swap测试代码
在C++中,移动语义和swap函数是提高代码效率的重要手段。为了更好的利用这两个特性,Boost库提供了一个adl_move_swap函数用于进行自动移动和交换操作。下面是一个简单的adl_move_swap测试程序。
#include <boost/utility.hpp>
#include <iostream>
class A {
public:
A() : n(new int(0)) {}
~A() { delete n; }
A(const A& a) : n(new int(*a.n)) {}
A(const A&& a) : n(a.n) { a.n = nullptr; }
A& operator=(A a) { adl_move_swap(*this, a); return *this; }
friend void swap(A& x, A& y) { std::swap(x.n, y.n); }
private:
int* n;
};
int main() {
A a1, a2;
a2 = a1;
std::cout << (a1.n == a2.n ? "Equal" : "Not equal") << std::endl;
return 0;
}
在上面的代码中,我们定义了一