Ich lerne Rvalue-Funktion von C++ 11. C++ Primer 5. Ausgabe besagt, dass eine Rvalue-Referenz nur an einen Rvalue binden kann, aber als ich dieses Programm zu kompilieren versuchte, übergab es, und die Ausgabe ist 1 1
.Warum ist die lvalue to rvalue Referenzbindung in g ++ 4.4.6 erlaubt?
Ich verstehe nicht warum. Ich bin mit g ++ 4.4.6 und kompiliert es mit
g ++ -Wall -std = C++ 0x test.cpp -o Test
#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;
}
Die Regel "rvalue reference bindet nicht an lvalues" wurde erst relativ spät in den C++ 11-Standardisierungsprozess eingefügt. Vermutlich implementiert GCC 4.4.6 einen früheren Entwurf der Spezifikation, der dieses Verbot nicht hat. –
Wahrscheinlich Zeit, um Ihren Compiler zu aktualisieren :) –