我知道using std::swap
的技巧,通过ADL启用用户定义的swap
函数,但我并不知道这应该也应用于其他一些函数。比如我在模板代码编写滥用std::abs
wheras我应该用这样的:“使用”的候选标准函数
template <class Int> void f(Int i) {
using std::abs;
Int j = abs(i);
// ...
}
你能想到什么标准功能,应使用这种方式?
在一个侧面说明:包括cstdlib
当G ++把abs
在全局命名空间(实际上ctsdlib
包括stdlib.h
(其定义功能abs
),并做了#undef abs
...),并在标准说什么?
目前的标准说''应该只提供命名空间内的函数。新的C++ 11标准将允许g ++(和大多数其他编译器)已经做的事情。 –
2011-04-01 09:40:21