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

时间:2011-05-22 04:35:28

标签: c++ swap c++11 rationale

为什么std::swap已移至C ++ 11的<utility>标头?

N3290 C.2.7说:

  

17.6.3.2

     

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

     

理由:删除<algorithm>对互换的依赖。

     

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

我无法用粗体理解这部分。正在谈论什么样的依赖性以及为什么?

1 个答案:

答案 0 :(得分:33)

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