std:cout<

std::cout<<std::endl与std::cout<<endl;
如果在声明函数的参数时使用了一个类,那么在查找匹配的函数名字时,编译器会在包含参数类型的名字空间中也进行查找。
那么根据这个规则
std::cout<<endl;应该是成立的,
但是在vs2012上却会编译错误
需要使用
std::cout<<std::endl;
才能过编译
求解

------解决方案--------------------
引用:
如果在声明函数的参数时使用了一个类,那么在查找匹配的函数名字时,编译器会在包含参数类型的名字空间中也进行查找。
那么根据这个规则
std::cout<<endl;应该是成立的,
但是在vs2012上却会编译错误
需要使用
std::cout<<std::endl;
才能过编译
求解

endl是一个类,然后在此类中声明了operator<<友元,函数名称是operator<<,第一个实参使用了std,会使编译器除了查找全局域中的operator<<之外,还在std中查找operator<<,这才是ADL;但endl不过是operator<<的另一个实参,这与ADL就无关了。