J'apprends la fonctionnalité rvalue de C++ 11. C++ Primer 5ème édition dit qu'une référence rvalue peut seulement se lier à un rvalue, mais quand j'ai essayé de compiler ce programme, il est passé, et la sortie est 1 1
.Pourquoi la liaison de référence de lvalue à rvalue est-elle autorisée sur g ++ 4.4.6?
Je ne comprends pas pourquoi. J'utilise g ++ 4.4.6, et compilé avec
g ++ -Wall std = C++ 0x test.cpp -o essai
#include <iostream>
using namespace std;
int main()
{
int i = 0;
int &&rr = i;
rr = 1;
std::cout << rr << std::endl;
std::cout << i << std::endl;
return 0;
}
La règle "La référence rvalue ne lie pas à lvalues" a été ajoutée assez tard dans le processus de normalisation C++ 11. Vraisemblablement, GCC 4.4.6 met en œuvre une version antérieure de la spécification qui n'a pas cette interdiction. –
Probablement le temps de mettre à jour votre compilateur :) –