在 C 11 標準的早期版本中,移動構造函數和賦值運算子的隱式生成是辯論的話題。這導致了後續草案的更改,導致目前可用的編譯器中出現以下行為:
自11 月發布C 標準(N3225) 以來,隱式移動構造函數和賦值運算子可以在以下條件下產生:
在早期草案中不包括默認移動構造函數/賦值實現的決定是由於擔心可能出現混亂和意外行為。但是,後續修訂透過收緊隱式移動產生的條件解決了這些問題。
如果您正在尋找一種在不編寫顯式移動構造函數/賦值運算符的情況下利用移動語義的方法,您可以使用[GManNickG的宏]( https://stackoverflow.com/a/12316884/8674521)。該巨集為您的類別產生必要的移動語義。
透過實現行動語意,您也可以選擇不提供交換成員函數。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3