public member function
<functional>

std::reference_wrapper::operator=

reference_wrapper& operator= (const reference_wrapper& rhs) noexcept;
拷贝赋值
rhs 持有的引用复制到 *this 中,替换当前持有的引用。

调用后,rhs*this 都引用同一个对象或函数。

参数

rhs
一个相同类型的 reference_wrapper 对象(即,具有相同的模板参数 T)。

返回值

*this

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// reference_wrapper::operator=
#include <iostream>     // std::cout
#include <functional>   // std::reference_wrapper

int main () {
  int a,b;

  // reference_wrapper assignment:
  a=10; b=20;
  std::reference_wrapper<int> wrap1 (a);
  std::reference_wrapper<int> wrap2 (b);

  wrap1 = wrap2;
  ++wrap1; ++wrap2;

  std::cout << "a: " << a << '\n';
  std::cout << "b: " << b << '\n';

  std::cout << '\n';

  // note the difference with:
  a=10; b=20;
  int& ref1 (a);
  int& ref2 (b);

  ref1 = ref2;
  ++ref1; ++ref2;

  std::cout << "a: " << a << '\n';
  std::cout << "b: " << b << '\n';

  return 0;
}

输出
a: 10
b: 22

a: 21
b: 21


数据竞争

对象被修改。
该对象获得对 rhs 所引用元素的引用(rhs.get()),可用于访问或修改该元素。

异常安全

无异常保证:此成员函数从不抛出异常。

另见