C ++ 11 Verschiebungssemantik und rvalue-Referenz

8

Betrachten Sie den folgenden Code:

%Vor%

Dies ist die Verwendung:

%Vor%

Beim Debuggen passiert Folgendes (mit VS2013):

Bei der return Anweisung des Konvertierungsoperators

  1. Neuer Vektor, der aus container durch Verschieben von
  2. erstellt wurde
  3. container wird zerstört

Nach der Rückkehr der Funktion:

  1. tmp wird vom Kopierkonstruktor
  2. erstellt

Meine Frage ist, warum nicht tmp von move constructor erstellt wurde?

Wie ich verstehe, ist der Rückgabewert der Funktion rvalue und sollte verschoben werden.

    
Alejandro Freeman 23.06.2015, 07:49
quelle

1 Antwort

2

VS2013 generiert den Verschiebungskonstruktor / die Zuordnung nicht automatisch. Dies wird in späteren Versionen gelöst.

Ссылка

    
user1186479 01.07.2015 10:52
quelle