我認爲for_each是在標準名稱空間中定義的,但是這個代碼實際上是編譯並且使用下面的編譯器標誌運行。有人可以解釋爲什麼嗎?爲什麼for_each沒有std ::前綴
//@filename myprog.cpp
//g++-4.5 --std=c++0x myprog.cpp
#include<iostream>
#include<algorithm>
int main()
{
std::vector<int> v{1,2,3,4,5};
std::cout<<"printing the number\n";
for_each(v.begin(),v.end(),[](int num) {//no std::for_each
std::cout<<num<<"\t";
});
return 0;
}
查找ADL - 這個網站上有很多問題(參數依賴查找) – Nim
我在想這不會是可移植的。我知道你只是好奇,但我建議使用'std ::'來保證安全。 –
編譯並運行哪個編譯器和標準庫實現? –