2016-07-11 30 views

Antwort

0

From here:

Compiler automatisch nur Standard bewegen Konstruktor erstellen, wenn es keine benutzerdefinierten ist Bewegung Konstrukteuren für eine Klasse-Typ vorgesehen sind (Struktur, Klasse oder Vereinigung), und alle folgenden ist wahr:

  • Es gibt keine von Benutzern deklarierten Kopierkonstruktoren;
  • Es gibt keine vom Benutzer deklarierten Kopierzuweisungsoperatoren;
  • Es gibt keine vom Benutzer deklarierten Zuweisungsoperatoren;
  • gibt es keine vom Benutzer deklarierten Destruktoren;
  • der implizit deklarierte Bewegung Konstruktor wird aufgrund von Bedingungen, die im nächsten Abschnitt nicht definiert als gelöscht detailliert,

Das ist, warum DLIB viel explizit definierte Bewegung Bauer hat in seinen Containern (array2d, DNN-Modul ...)

1

Die Expression-Template-Technik hat viel mehr zu bieten als nur das Vermeiden des Kopierens. Zum Beispiel kann der Compiler symbolische lineare Algebra durchführen, um ganze Ausdrücke in effizienter ausführenden Code umzuwandeln. Viele dieser Transformationen haben nichts mit der Vermeidung von Kopien zu tun.