【问题标题】:Why was std::swap moved to <utility>?为什么将 std::swap 移至 <utility>?
【发布时间】:2011-08-30 11:22:55
【问题描述】:

为什么 std::swap 被移动到 C++11 的 &lt;utility&gt; 标头?

N3290 C.2.7 说:

17.6.3.2

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

理由:移除对&lt;algorithm&gt;for 交换的依赖。

对原始功能的影响:已编译的有效 C++ 2003 代码预期交换位于 &lt;algorithm&gt; 可能必须改为包含 &lt;utility&gt;

我无法理解粗体部分。讨论了什么样的依赖,为什么?

【问题讨论】:

  • 这实际上不是节号,您引用的段落在 C.2.7 节中。

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


【解决方案1】:

委员会希望允许您使用 swap() 而不会引入对大型且更复杂的 &lt;algorithm&gt; 头文件的编译时依赖性。因为swap() 的使用如此广泛,所以让您以尽可能少的额外包袱来引入它的定义是有意义的;这通常会导致不需要&lt;algorithm&gt; 的文件的编译时间更快。它的新家允许使用它而不会产生不必要的开销。

【讨论】:

  • 感谢您的准确解释。 :)
猜你喜欢
  • 2021-10-01
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 2018-02-26
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
相关资源
最近更新 更多