Why has std::swap
been moved to the <utility>
header for C++11?
N3290 C.2.7 says:
17.6.3.2
Effect on original feature: Function swap moved to a different header
Rationale: Remove dependency on
<algorithm>
for swap.Effect on original feature: Valid C++ 2003 code that has been compiled expecting swap to be in 开发者_StackOverflow社区
<algorithm>
may have to instead include<utility>
.
I can't understand the part in bold. What kind of dependency is being talked about and why?
The committee wanted to allow you to use swap()
without introducing a compile-time dependency on the large and more complex <algorithm>
header file. Because swap()
is so widely used, it makes sense to let you pull in its definition with as little additional baggage as possible; this will generally lead to faster compile times for files that don't otherwise need <algorithm>
. Its new home allows it to be used without introducing unneeded overhead.
精彩评论