In frühen Versionen des C 11-Standards war die implizite Generierung von Verschiebungskonstruktoren und Zuweisungsoperatoren a Thema der Debatte. Dies führte zu Änderungen in nachfolgenden Entwürfen, die zu folgendem Verhalten in derzeit verfügbaren Compilern führten:
Seit der November-Veröffentlichung des C-Standards (N3225) implizite Verschiebungskonstruktoren und -zuweisungen Operatoren können unter den folgenden Bedingungen generiert werden:
Die Entscheidung, keine standardmäßigen Verschiebungskonstruktoren/Zuweisungsimplementierungen in frühe Entwürfe aufzunehmen, war das Ergebnis von Bedenken hinsichtlich der Möglichkeit von Verwirrung und unerwartetem Verhalten. Nachfolgende Überarbeitungen haben diese Bedenken jedoch ausgeräumt, indem die Bedingungen für die implizite Verschiebungsgenerierung verschärft wurden.
Wenn Sie nach einer Möglichkeit suchen, die Verschiebungssemantik zu nutzen, ohne explizite Verschiebungskonstruktoren/Zuweisungsoperatoren zu schreiben , können Sie [GManNickGs Makro](https://stackoverflow.com/a/12316884/8674521) verwenden. Dieses Makro generiert die erforderliche Bewegungssemantik für Ihre Klasse.
Durch die Implementierung der Bewegungssemantik können Sie auch die Bereitstellung einer Swap-Member-Funktion deaktivieren.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3