Welche Regeln gelten für die automatische Generierung von Verschiebevorgängen?
In C ++ 98 könnte der C ++ - Compilerautomatisch Erzeugen eines Kopierkonstruktors und eines Kopierzuweisungsoperators über eine mitgliedsmäßige Kopie, z.
struct X {
std::string s;
std::vector<int> v;
int n;
};
Der Compilerautomatisch generiert Kopierkonstruktor und Kopierzuweisungsoperator fürX
, mit mitgliederseitiger Kopie.
Aber wie ändern sich die Dinge in C ++ 11 mit der Verschiebungssemantik?
Sind dieBewegung Konstrukteur undBewegung Aufgabenverwalter automatisch wie Kopierkonstruktoren und Kopierzuweisungsoperatoren erzeugt?
Gibt es Fälle, in denen Verschiebeoperationen sind,nicht automatisch erzeugt?