这是 Scott Meyers 的 C++11 Notes Sample 的代码,
int x;
auto&& a1 = x; // x is lvalue, so type of a1 is int&
auto&& a2 = std::move(x); // std::move(x) is rvalue, so type of a2 is int&&
我很难理解auto&&
。
我对 有一些了解auto
,从中我会说auto& a1 = x
应该使 type of a1
asint&
引用代码中的哪个似乎是错误的。
我写了这个小代码,并在 gcc 下运行。
#include <iostream>
using namespace std;
int main()
{
int x = 4;
auto& a1 = x; //line 8
cout << a1 << endl;
++a1;
cout << x;
return 0;
}
输出 =4 (newline) 5
然后我将第 8 行修改为auto&& a1 = x;
,然后运行。相同的输出。
我的问题:auto&
等于auto&&
?
如果它们不同,会auto&&
做什么?