在 C 11 標準的早期版本中,移動建構子和賦值運算子的隱式產生是辯論的話題。這導致後續草案發生變化,導致目前可用的編譯器出現以下行為:
自11 月發布C 標準(N3225) 以來,隱式移動構造函數和賦值運算子可以在以下條件下產生:
在早期草稿中不包含默認移動構造函數/賦值實現的決定是出於對潛在混亂和意外行為的擔憂的結果。但是,後續修訂透過收緊隱式移動產生的條件解決了這些問題。
如果您正在尋找一種在不編寫顯式移動構造函數/賦值運算符的情況下利用移動語義的方法,您可以使用[GManNickG的宏]( https://stackoverflow.com/a/12316884/8674521)。該巨集為您的類別產生必要的移動語義。
透過實作移動語意,您也可以選擇不提供交換成員函數。
以上是為什麼早期 C 11 草案中沒有預設移動實作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!