初期の C 11 ドラフトには自動移動セマンティクスが欠如
主に POD タイプと STL コンテナーを扱うプログラマーとして、明示的な割り当てを作成する演算子とコピー コンストラクターは、デフォルトの実装のためほとんど不要です。しかし、C 11 標準の初期草案には自動移動セマンティクスが存在しないため、使いやすさと安全性について懸念が生じました。
移動コンストラクターと代入演算子の暗黙的な生成は、多くの議論と改訂の対象となってきました。 C スタンダード。初期のドラフトでは、これらのセマンティクスは自動的には提供されず、追加のコーディング作業なしで移動機能を活用しようとするプログラマにとって課題となっていました。
現在の仕様 (N3225) では、暗黙的な移動生成に対してより厳しい条件が提供されています。暗黙的に宣言された移動コンストラクターを持つには、クラス X が次のようないくつかの基準を満たしている必要があります。
同様の表現が暗黙的な移動代入演算子にも適用されます。これらの制限は、暗黙的なセマンティクスとユーザー定義のセマンティクス間の潜在的な競合、および移動セマンティクスの誤用に関する懸念に対処するために導入されました。
初期の C 11 ドラフトには暗黙的な移動セマンティクスが欠如していたため、プログラマはこれらの関数を手動で実装する必要がありました。移動機能を利用したい場合。ただし、その後の標準の改訂ではこの問題が解決され、暗黙的な移動生成がより広く利用できるようになり、オブジェクト所有権管理のための移動セマンティクスの使用が簡素化されました。
以上が初期の C 11 ドラフトで暗黙的な移動セマンティクスが省略されたのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。