std::ref()是C++11引入的一个函数,整体用法和&差不多,但是返回的是一个“reference_wrapper”类型的对象。
reference_wrapper至少有以下用处:
- 任何类型在经过std::ref()函数后都返回reference_wrapper类型,它可以被枚举,可以构成数组,而“&”做不到这点。有点类似于std::function一样。
- 在std::bind传入的引用时,使用“&”是无效的,必须使用std::ref()
#include <iostream>
#include <functional>
int main()
{
int x=5, y=7, z=8;
reference_wrapper<int> arr[] {x,y,z};
for (auto a: arr)
cout << a << " ";
return 0;
}
来源:Stack Overflow 提问:C++ Difference between std::ref(T) and T&?