template <class T> class reference_wrapper; |
成员类型 | 定义 |
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。 否则,没有定义。 |
(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; } |