Это код из 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
должен создавать тип 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 (новая строка) 5
Затем я изменил строку 8 как auto && a1 = x;
и запустил. Тот же результат.
Мой вопрос: равно ли auto &
auto &&
?
Если они разные, что делает auto &&
?