fre*_*low 11 c++ swap header-files c++-standard-library c++11
该swap
函数模板是从移动<algorithm>
到<utility>
C++ 0x中.前者是否在C++ 0x中包含后者?或者它们都包含一个共同的标题定义swap
?
换句话说,以下代码是否保证在C++ 0x中编译?
#include <algorithm> // will this pull in std::swap?
// ...
using std::swap;
swap(a, b);
Run Code Online (Sandbox Code Playgroud)
Ste*_*sop 15
FDIS(n3290),附件C,"兼容性",C.2.7说:
17.6.3.2
影响原始功能:功能交换移动到不同的标题
基本原理:删除对<algorithm>的依赖关系以进行交换.
对原始功能的影响:编译的有效C++ 2003代码期望交换在<algorithm>中,可能必须包含<utility>.
所以不,它不能保证编译,这是故意改变.单个实现是否真的会破坏C++ 03代码是另一回事.正如你所指出的那样,swap
通过任一标题定义它们都不容易.但是可以选择将C++ 03代码移植到C++ 0x,以及帮助人们严格遵守C++ 0x.
归档时间: |
|
查看次数: |
955 次 |
最近记录: |