为什么std :: swap移动到<utility>?

Pra*_*rav 18 c++ swap rationale c++11

为什么要std::swap转移到<utility>C++ 11 的标题?

N3290 C.2.7说:

17.6.3.2

对原始功能的影响:功能交换移动到不同的标头

基本原理:删除对<algorithm>swap的依赖.

对原始功能的影响:已编译的有效C++ 2003代码期望交换<algorithm>可能必须包含<utility>.

我无法理解这部分的粗体.正在讨论什么样的依赖关系?为什么?

Ern*_*ill 33

委员会希望允许您使用swap()而不会在大型和更复杂的<algorithm>头文件上引入编译时依赖性.因为它swap()被如此广泛地使用,所以让你在尽可能少的额外行李中提出它的定义是有意义的; 这通常会导致更快的编译时间,而不需要其他文件<algorithm>.它的新家可以在不引入不必要的开销的情况下使用它.