Este es el código de C++ 11 Notas de la muestra por Scott Meyers,¿Qué significa auto && do?
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&&
Estoy teniendo problemas para entender auto&&
.
que tienen una cierta comprensión de auto
, de la que yo diría que debería hacer auto& a1 = x
tipo de a1
como int&
que a partir de código Citado, parece mal.
Escribí este pequeño código y corrí bajo gcc.
#include <iostream>
using namespace std;
int main()
{
int x = 4;
auto& a1 = x; //line 8
cout << a1 << endl;
++a1;
cout << x;
return 0;
}
de salida = 4 (newline) 5
Entonces modificado la línea 8 como auto&& a1 = x;
, y corrió. Mismo resultado.
Mi pregunta es auto&
igual a auto&&
?
Si son diferentes, ¿qué hace auto&&
?
Creo que 'auto &' y 'auto &&' son equivalentes si rhs es un lvalue. 'auto &' le dará un error si rhs es un valor r. – balki
[Las referencias de Lvalue y rvalue son similares] (http://msdn.microsoft.com/en-us/library/f90831hc.aspx) – AJG85
Una variable 'auto &&' significa lo mismo que un parámetro 'T &&' en una plantilla de función . – fredoverflow