Warum sollte eine Klasse / Funktion zwei Überladungen haben, eine für lvalue und eine für rvalue?
ZB von dies video, es heißt, wir haben zwei Überladungen für vector<T>::push_back
Warum können wir nicht nur eine Überladung nach Wert haben,
? %Vor%Wenn es ein Lvalue wäre, würde der Wert kopiert und wenn es ein Rvalue wäre, würde der Wert verschoben werden. Ist das nicht so, wie es funktioniert und vom Standard garantiert wird?
Bei Ihrem Wertvorschlag würde es technisch kopieren + bewegen oder verschieben + bewegen sein, während bei den anderen zwei Überladungen eine einzelne Kopie oder ein einzelner Zug vorhanden ist.
Abgesehen von dem Punkt, den andere erwähnt haben, würde es auch erfordern, dass die alte Schnittstelle geändert wird. Und manchmal ist das einfach nicht akzeptabel.
Tags und Links c++ c++11 move-semantics