std::ref, std::cref
来自cppreference.com
< cpp | utility | functional
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Defined in header <functional>
|
||
| template< class T > std::reference_wrapper<T> ref(T& t); |
(1) | (C++11 起) |
| template< class T > std::reference_wrapper<T> ref( std::reference_wrapper<T> t ); |
(2) | (C++11 起) |
| template< class T > std::reference_wrapper<const T> cref( const T& t ); |
(3) | (C++11 起) |
| template< class T > std::reference_wrapper<const T> cref( std::reference_wrapper<T> t ) |
(4) | (C++11 起) |
功能的模板
ref,cref辅助函数生成的对象的类型std::reference_wrapper,使用模板参数推导的结果来确定的模板参数.Original:
Function templates
ref and cref are helper functions that generate an object of type std::reference_wrapper, using template argument deduction to determine the template argument of the result.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
目录 |
[编辑] 参数
| t | - | 左值的参照对象,需要包扎或一个实例std::reference_wrapper
Original: lvalue reference to object that needs to be wrapped or an instance of std::reference_wrapper The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[编辑] 返回值
1) std::reference_wrapper<T>(t)
2) ref(t.get())
3) std::reference_wrapper<const T>(t)
4) cref(t.get())
[编辑] 的异常
[编辑] 为例
#include <functional> #include <iostream> void f(int& n1, int& n2, const int& n3) { std::cout << "In function: " << n1 << ' ' << n2 << ' ' << n3 << '\n'; ++n1; // increments the copy of n1 stored in the function object ++n2; // increments the main()'s n2 // ++n3; // compile error } int main() { int n1 = 1, n2 = 2, n3 = 3; std::function<void()> bound_f = std::bind(f, n1, std::ref(n2), std::cref(n3)); n1 = 10; n2 = 11; n3 = 12; std::cout << "Before function: " << n1 << ' ' << n2 << ' ' << n3 << '\n'; bound_f(); std::cout << "After function: " << n1 << ' ' << n2 << ' ' << n3 << '\n'; }
Output:
Before function: 10 11 12 In function: 1 11 12 After function: 10 12 12
[编辑] 另请参阅
| (C++11) |
CopyConstructible和CopyAssignable参考包装 Original: CopyConstructible and CopyAssignable reference wrapper The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (类模板) |