Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

reference_wrapper

类模板  <functional>

template <class T> class reference_wrapper;

引用包装器
一个模拟对T类型元素的引用,但可以复制该元素(它既可以复制构造,也可以复制赋值)的类。

☲  模板参数


T
引用元素类型
它可以是一个对象,也可以是一个函数。

☲  成员类型


成员类型 定义
type 模板参数(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之外,其他成员类型并不总是定义的。

☲  成员函数



(constructor) 构造引用包装器(公共成员函数)
operator= 复制赋值(公共成员函数)
get 访问元素(公共成员函数)
operator() 访问元素(函数形式)(公共成员函数)
operator type& 引用反射(公共成员函数)

☲  非成员函数重载



ref 构建引用包装器(函数模板)
cref 将引用包装器构造为const(公共成员函数)

☣  示例



// 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

联系我们 免责声明 关于CandCplus 网站地图