我对这个程序有一些疑问:
#include <iostream>
#include <type_traits>
#include <functional>
using namespace std;
template <typename T> void foo ( T x )
{
auto r=ref(x);
cout<<boolalpha;
cout<<is_same<T&,decltype(r)>::value;
}
int main()
{
int x=5;
foo (x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
false
Run Code Online (Sandbox Code Playgroud)
我想知道,如果std::ref没有返回对象的引用,那么它会做什么?基本上,有什么区别:
T x;
auto r = ref(x);
Run Code Online (Sandbox Code Playgroud)
和
T x;
T &y = x;
Run Code Online (Sandbox Code Playgroud)
另外,我想知道为什么存在这种差异?为什么我们需要std::ref或std::reference_wrapper什么时候有参考(即T&)?