Warum wird dieser Kopierkonstruktor aufgerufen und nicht der Move-Konstruktor?

8

Das folgende Code-Snippet ruft den Kopierkonstruktor auf, wo ich den Aufruf des Move-Konstruktors erwartet habe:

%Vor%

Auf VS11 Beta, im Debug-Modus, wird Folgendes gedruckt:

%Vor%

Ich habe den Standard überprüft und Bar scheint alle Anforderungen zu erfüllen, damit automatisch ein Standard-Move-Konstruktor generiert wird, aber das scheint nicht zu passieren, außer es gibt einen anderen Grund, warum das Objekt nicht verschoben werden kann. Ich habe hier viele Fragen zum Verschieben und Kopieren von Konstruktoren gesehen, aber ich glaube nicht, dass jemand dieses spezifische Problem hatte.

Irgendwelche Hinweise darauf, was hier vor sich geht? Ist das Standardverhalten?

    
Trillian 18.04.2012, 01:42
quelle

1 Antwort

8

Leider bietet VS11 keinen Standard-Move-Konstruktor. Siehe Move Semantics im Abschnitt "Bemerkungen" - um zu zitieren:

  

Im Gegensatz zum standardmäßigen Kopierkonstruktor stellt der Compiler kein a zur Verfügung   Standardbewegungskonstruktor.

    
Fraser 18.04.2012, 01:53
quelle