Это код из С++ 11 Notes Sample by Scott Meyers,
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 должен сделать тип a1 как int&
Какой из котируемого кода кажется неправильным.
Я написал этот маленький код и пробежал под 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&&?