关于这个节目,我有几个问题:
#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;
}
输出结果是:
false
我想知道,如果 std::ref
不返回对象的引用,那么它会做什么?基本上,两者的区别是什么:
T x;
auto r = ref(x);
还有
T x;
T &y = x;
另外,我想知道为什么会存在这种差异?为什么我们需要 std::ref
或 std::reference_wrapper
时,我们有参考(即 T&
) ?