function template
<functional>

std::cref

reference (1)
template <class T>  reference_wrapper<const T> cref (const T& elem) noexcept;
复制 (2)
template <class T>  reference_wrapper<const T> cref (reference_wrapper<T>& x) noexcept;
移动 (3)
template <class T>  void cref (const T&&) = delete;
Construct reference_wrapper to const
Constructs an object of the appropriate reference_wrapper type to hold a const T reference to elem.

If the argument is itself a reference_wrapper to a const T (2), it creates a copy of x instead.

The function calls the proper reference_wrapper constructor.

参数

elem
An lvalue reference, whose const reference is stored in the object.
x
A reference_wrapper object to const T, which is copied.

返回值

A reference_wrapper object of the appropriate type to hold an element of type const T.

示例

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

int main () {
  int foo (10);

  auto bar = std::cref(foo);

  ++foo;

  std::cout << bar << '\n';

  return 0;
}

输出
11


数据竞争

The initialization version (1) does not access elem, but the returned object can be used to access it.
The copying version (2) accesses its argument (x), returning an object that which can be used to access its referred element.

异常安全

无异常保证: 绝不抛出异常。

另见