Betrachten Sie diesen Code:Ist das Verhalten von std :: ref logisch?
#include <iostream>
#include <functional>
int xx = 7;
template<class T>
void f1(T arg)
{
arg += xx;
}
template<class T>
void f2(T arg)
{
arg = xx;
}
int main()
{
int j;
j=100;
f1(std::ref(j));
std::cout << j << std::endl;
j=100;
f2(std::ref(j));
std::cout << j << std::endl;
}
Wenn er ausgeführt wird, dieser Code Ausgänge
107
100
I der zweite Wert 7 erwartet hätte lieber zu sein als 100.
Was bin ich?
Der Referenzwrapper ist wiedersetzbar, so dass die Zuweisung ändert, was referenziert wird, nicht das referenzierte Objekt. –
Ausgezeichnete Frage! – vsoftco