关于std::ref函数
关于std::ref函数
概念:
std::ref
是C++11中引入的一个模板函数,用来产生std::reference_wrapper
对象的函数,也就是我们常说的引用- std::ref会将传入参数转成引用返回
- 相比较平常的&引用符号,我们可以使用std::ref来让泛型函数的参数类型推导推导成引用
函数原型:
1 |
|
使用案例:
- 当我们希望在目标函数中对当前局部变量进行操作(也就是传入引用类型的变量),而函数模板作为一个中转站时,我们需要在当前调用函数时传入std::ref返回的对象作为参数
- 在下面示例中,foo作为目标函数,我们可以看到传入的是int&类型的变量,用来对外面的局部变量操作,而在项目中有时候我们需要用到函数模板foo1这种泛型编程作为中转站,而我们如果直接将局部变量a传入而不进行std::ref操作,这样将会导致在函数模板foo1中的Args类型被推导成int而不是int&,这样我们在调用foo就无法对main函数中的局部变量a操作成功
- 像这种情况的出现有很多,例如创建thread对象,传入线程函数和所需参数时,也是这种函数模板作为中转站的方式
1 |
|
关于std::ref函数
https://moonfordream.github.io/posts/关于std-ref函数/