23

C ++ 11 std::swapのヘッダーに移動されたのはなぜですか?<utility>

N3290 C.2.7によると:

17.6.3.2

元の機能への影響:関数スワップが別のヘッダーに移動されました

理論的根拠:スワップの依存関係を削除します。<algorithm>

元の機能への影響:スワップが含まれることを期待してコンパイルされた有効なC ++ 2003コードには<algorithm>、代わりにを含める必要がある場合があります<utility>

太字の部分がわかりません。どのような依存関係が話題になっていますか、そしてその理由は何ですか?

4

1 に答える 1

38

委員会は、大きくてより複雑なヘッダーファイルswap()へのコンパイル時の依存関係を導入せずに使用できるようにしたいと考えていました。<algorithm>非常に広く使用されているためswap()、追加の手荷物をできるだけ少なくして、その定義を取り入れることができます。これにより、通常、他の方法では必要のないファイルのコンパイル時間が短縮されます<algorithm>。その新しい家は、不必要なオーバーヘッドを導入することなくそれを使用することを可能にします。

于 2011-05-22T04:39:44.410 に答える