std::swap が <utility> に移動されたのはなぜですか?
質問
なぜ std::swap
に移動されました <utility>
C++11のヘッダー?
N3290 C.2.7 には次のように書かれています。
17.6.3.2
元の機能への影響:関数スワップは別のヘッダーに移動されました
理論的根拠: への依存関係を削除する
<algorithm>
交換用に。元の機能への影響:スワップが含まれることを期待してコンパイルされた有効な C++ 2003 コード
<algorithm>
代わりに含める必要がある場合があります<utility>
.
太字の部分が理解できません。どのような依存関係が話題になっていますか?またその理由は何ですか?
解決
委員会はあなたに使用を許可したいと考えていました swap()
大規模でより複雑なコンパイル時の依存関係を導入することなく、 <algorithm>
ヘッダファイル。なぜなら swap()
は非常に広く使用されているため、追加の荷物をできるだけ少なくしてその定義を取り込むことができるのは理にかなっています。これにより、通常は必要のないファイルのコンパイル時間が短縮されます。 <algorithm>
. 。新しいホームにより、不必要なオーバーヘッドを発生させることなく使用できるようになります。
所属していません StackOverflow