Что делает auto &&?

Это код из 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 && ?

35
задан Vinayak Garg 8 April 2012 в 05:58
поделиться