Warum kein Standard-move-assignment / move-constructor?

Ich bin ein einfacher Programmierer. Meine Klasse member-Variablen am häufigsten besteht der POD-Typen und STL-Containern. Da ich nur selten schreiben Zuweisungsoperatoren oder copy-Konstruktoren, da diese standardmäßig implementiert.

Hinzu, wenn ich std::move auf Objekte, nicht beweglich, es verwendet den Zuweisungsoperator, d.h. std::move ist absolut sicher.

So, ich bin ein einfacher Programmierer, würde ich mag, um die Vorteile der move-Funktionen, ohne einen move-Konstruktor/Zuweisungsoperator für jede Klasse I schreiben, da der compiler könnte einfach umsetzen Sie als "this->member1_ = std::move(other.member1_);..."

Aber nicht (zumindest nicht in Visual 2010), gibt es einen bestimmten Grund dafür?

Wichtiger; gibt es eine Möglichkeit dies zu umgehen?

Update:
Wenn Sie schauen nach GManNickG Antwort, er bietet ein tolles makro. Und wenn Sie nicht wissen, wenn Sie implementieren move-Semantik können Sie entfernen Sie die swap Memberfunktion.

InformationsquelleAutor der Frage Viktor Sehr | 2011-01-27

Schreibe einen Kommentar