std::
cref
类模板 <functional>
reference (1) |
template <class T>
reference_wrapper<const T> cref (const T& elem) noexcept;
|
copy (2) |
template <class T>
reference_wrapper<const T> cref (reference_wrapper<T>& x) noexcept;
|
move (3) |
template <class T>
void cref (const T&&) = delete;
|
将引用包装器构造为const
构造一个适当的reference_wrapper(引用包装器)类型的对象,保存对elem的const T引用。
如果参数本身是const T(2)的reference_wrapper(引用包装器),它会创建一个x的副本。
该函数调用相应的reference_wrapper构造函数。
☲ 参数
-
elem
-
一个左值引用对象,其const引用存储在对象中。
-
x
-
复制的const T的reference_wrapper对象。
☉ 返回值
适当类型的reference_wrapper对象,用于保存const T类型的元素。
☣ 示例
// 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
⇄ 数据竞争
reference (1)不访问elem,但是返回的对象可以访问elem。
copy(2)访问其实参(x),返回一个可用于访问其引用的元素的对象。
☂ 异常安全性
无抛出保证:从不抛出异常。
🍄 另请参阅