C 11 での COW std::string 実装の合法性
以前のバージョンの C では、コピーオンライト (COW) はstd::string の実行可能な実装戦略。ただし、C 11 での有効性については懸念が生じています。この記事では、C 11 における COW ベースの std::string 実装の合法性を検証します。
質問: C 11 は明示的に禁止していますか? COW ベースの std::string 実装?
答え:いいえ、C 11 では、COW ベースの実装が禁止されていることは明示的に述べられていません。
質問: そうでない場合、この制限はどのように暗示されますか?
回答: この制限は、反復子と参照の無効化に関する C 11 の新しい要件から生じます。標準のセクション 21.4.1 p6 によると、無効化は特定の場合にのみ許可されます。
COW 文字列実装では、非 const 演算子 [] を呼び出すと、コピーと参照の無効化が必要になります。ただし、前項ではこれを禁止しています。したがって、COW std::string 実装は C 11 では許可されなくなりました。
以上がC 11 では std::string のコピーオンライト実装は合法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。