Warum hat push_back zwei Überladungen für lvalues ​​und rvalues?

8

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

%Vor%

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?

    
balki 26.01.2013, 07:50
quelle

2 Antworten

8

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.

    
user1610015 26.01.2013, 07:56
quelle
5

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.

    
Nicol Bolas 26.01.2013 07:59
quelle

Tags und Links