for_each는 표준 네임 스페이스에 정의되어 있지만이 코드는 실제로 컴파일되어 다음 컴파일러 플래그로 실행됩니다. 왜 누군가가 설명해 주실 수 있습니까?for_each가 std :: prefix없이 작동하는 이유는 무엇입니까?
//@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 ::'를 사용하여 안전하다고 제안합니다. –
컴파일러와 표준 라이브러리 구현에서 컴파일되고 실행됩니까? –