【发布时间】:2016-01-19 08:51:12
【问题描述】:
我对此计划有一些疑问:
#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;
另外,我想知道为什么会存在这种差异?当我们有引用(即T&)时,为什么我们需要std::ref 或std::reference_wrapper?
【问题讨论】:
-
提示:如果你在这两种情况下都使用
x = y;会发生什么? -
除了我的重复标志(最后一条评论):参见例如 stackoverflow.com/questions/31270810/… 和 stackoverflow.com/questions/26766939/…
-
@anderas 这与有用性无关,主要是关于差异
-
@CppNITR 然后查看我在您发表评论前几秒钟链接的问题。尤其是第二个很有用。