Was macht static_cast <T> mit einem T &?

Also habe ich gefragtdiese Frag und ich bastelte daran, es über @ zu lösstatic_cast. (Übrigens löst es das Problem, ich bin mir nur nicht sicher, ob ich verstehe warum.)

Im Code:

vector<int> foo = {0, 42, 0, 42, 0, 42};
replace(begin(foo), end(foo), static_cast<int>(foo.front()), 13);

Ist derstatic_cast einfach einen R-Wert konstruierenint? Was ist der Unterschied zwischen dem und nur dem Anruf:

replace(begin(foo), end(foo), int{foo.front()}, 13);

BEARBEITEN

Wie aus den Antworten @ hervorgestatic_cast does scheint einen R-Wert zu konstruierenint: http: //ideone.com/dVPIh

Aber dieser Code machtnich Arbeit an Visual Studio 2015. Ist dies ein Compiler-Fehler? Hier testen:http: //webcompiler.cloudapp.net

Antworten auf die Frage(4)

Ihre Antwort auf die Frage