我知道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