function template
<memory>

std::swap (weak_ptr)

template <class T>  void swap (weak_ptr<T>& x, weak_ptr<T>& y) noexcept;
交换 weak_ptr 对象的内容
交换 xy 的内容,交换它们的归属组和任何存储的数据。

这个非成员函数实际上调用x.swap(y).

这是通用算法 swap 的特化。

参数

x,y
两个相同类型的 weak_ptr 对象(使用相同的模板参数实例化T).

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// weak_ptr swap specialization
#include <iostream>
#include <memory>

int main () {
  std::shared_ptr<int> sp1 (new int(10));
  std::shared_ptr<int> sp2 (new int(20));

  std::weak_ptr<int> wp1(sp1);
  std::weak_ptr<int> wp2(sp2);

  swap(wp1,wp2);

  std::cout << "sp1 -> " << *sp1 << '\n';
  std::cout << "sp2 -> " << *sp2 << '\n';
  std::cout << "wp1 -> " << *wp1.lock() << '\n';
  std::cout << "wp2 -> " << *wp2.lock() << '\n';

  return 0;
}

输出
foo: 20
bar: 10


复杂度

常量。

另见