我认为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 ::'来保证安全。 –
编译并运行哪个编译器和标准库实现? –