類模板
<functional>

std::reference_wrapper

template <class T> class reference_wrapper;
引用包裝器
一個類,它模擬對型別為 T 的元素的引用,但該類是可複製的(它是 可複製構造可複製賦值 的)。

模板引數

T
所引用元素的型別。
這可以是物件,也可以是函式。

成員型別

成員型別定義
型別模板引數 (T)
result_type如果 T 是函式指標或成員函式指標型別:T 的返回型別。
如果 T 是一個類,並且有一個 result_type 成員:T::result_type
否則,未定義。
argument_type如果 T 是函式型別或函式指標型別,它接受單個引數:T 所接受引數的型別。
如果 T 是成員函式指標:T 所屬的類型別(具有與成員函式相同的 const/volatile 限定)。
如果 T 是一個類,並且有一個 argument_type 成員:T::argument_type
否則,未定義。
first_argument_type如果 T 是函式型別或函式指標型別,它接受兩個引數:T 所接受的第一個引數的型別。
如果 T 是成員函式指標,它接受單個引數:T 所屬的類型別(具有與成員函式相同的 const/volatile 限定)。
如果 T 是一個類,並且有一個 first_argument_type 成員:T::first_argument_type
否則,未定義。
second_argument_type如果 T 是函式型別或函式指標型別,它接受兩個引數:T 所接受的第二個引數的型別。
如果 T 是成員函式指標,它接受單個引數:T 所接受的引數。
如果 T 是一個類,並且有一個 second_argument_type 成員:T::second_argument_type
否則,未定義。
請注意,除了 type 之外,其他成員型別並非總是已定義。

成員函式


非成員輔助函式


示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// reference_wrapper example:
#include <iostream>     // std::cout
#include <functional>   // std::reference_wrapper

int main () {
  int a(10),b(20),c(30);

  // an array of "references":
  std::reference_wrapper<int> refs[] = {a,b,c};

  std::cout << "refs:";
  for (int& x : refs) std::cout << ' ' << x;
  std::cout << '\n';

  return 0;
}

可能的輸出
refs: 10 20 30